Roslyn없이 웹 사이트 게시


92

Visual Studio 2015 및 .NET 4.5.1을 사용하여 웹 응용 프로그램을 만들려고합니다. 웹 사이트를 게시하면 Visual Studio에서 roslyn.

여기에 이미지 설명 입력

나는 그것이 코드를 즉시 컴파일하는 데 사용된다는 것을 알고 있지만 불행히도 내 호스팅 공급자는 서버에서 컴파일러를 실행할 수 없습니다.

roslyn이전 버전의 Visual Studio와 달리 웹 사이트를 게시하는 방법은 무엇입니까?

편집 : 내 웹 사이트에 액세스하려고 할 때이 오류가 발생했습니다.

여기에 이미지 설명 입력

IIS가 실행을 시도하는 것 roslyn\csc.exe같지만 내 사용자 계정에이를 수행 할 권한이 없습니다. 이전 버전의 Visual Studio에서는이 오류가 표시되지 않습니다.


또한 Roslyn은 DLL의 집합 일뿐입니다. 호스트는 자신이하는 일을 알거나 신경 쓸 수 없습니다.
SLaks 2015-08-30

3
@Slaks IIS가 csc.exe를 실행하려고합니다. 편집을 참조하십시오.
Niyoko 2015-08-30

Plesk를 사용하는 경우 '웹 사이트 전용 IIS 응용 프로그램 풀'을 비활성화하면 해당 패키지를 제거 할 필요도 없습니다!
Vahid Amiri

답변:


184

나는 방금 같은 문제에 직면했습니다. 새 웹 프로젝트를 만들 때 두 개의 nuget 패키지가 프로젝트에 자동으로 추가됩니다. 제거하면 문제가 해결됩니다. 패키지 이름은 " Microsoft.CodeDom.Providers.DotNetCompilerPlatform "및 " Microsoft.Net.Compilers "입니다.


이것은 효과가 있었고 타사 웹 호스팅 제공 업체에 적합합니다. 이에 대해 두 가지 쿼리가 있습니다. 1) 이러한 Nuget 패키지를 제거하면 어떤 식 으로든 제품에 영향을 미칠 수 있습니까? 2) 매번이 연습을 피하기 위해 이러한 패키지를 프로젝트 템플릿 자체에서 제거 할 수 있습니까?
nura

1) 제품의 작업 흐름이나 논리에 영향을 미치지 않습니다. 그러나 @ Ajay2707에서 제공 하는 URL ( itorian.com/2015/09/roslyn-cscexe-and-vbcexe-deployment-on.html )은이 패키지가 페이지로드 시간에 영향을 준다고 말합니다. 2) 어떻게 할 수 있을지 모르겠지만, 할 수 있다면 아무 문제 없습니다.
Kemal Kefeli

3
두 NuGet 패키지를 모두 제거했습니다. 구성 선언이 제거되었습니다. 여전히이 폴더는 컴파일 또는 게시 중에 생성됩니다. 내 응용 프로그램에서 사용하는 NuGet 패키지 만 "Newtonsoft.Json"입니다. 나도 제거해야합니까?
Ranjan Kumar

8
이러한 패키지를 제거하면 C # 6 기능의 사용이 중단됩니다. 이것은 뷰 요법을 미리 컴파일하는 ""미리 컴파일 된 사이트를 업데이트 할 수 있도록 허용 "을 선택 취소하여 해결할 수 있습니다.
Rutix

9
@RanjanKumar : 텍스트 편집기에서 csproj 파일을 열고 Kemal의 답변에 설명 된 NuGet 패키지에 해당하는 노드를 제거합니다. 여기에는 Import노드, Target노드 (EnsureNugetPackageBuildImports) 및 Reference노드 가 포함될 수 있습니다 . 또한 <system.codedom>web.config 의 노드를 제거하십시오 .
Brian

16

나는 같은 문제가 있었다. 여기 에서 단계를 따랐습니다 . 원래:

  1. 패키지 제거

    Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform <Your Web API project name>
    
  2. 게시 프로필 설정에서 "미리 컴파일 된 사이트를 업데이트 할 수 있도록 허용"을 선택 취소합니다. 설정> 게시 중 사전 컴파일> 구성에서 찾을 수 있습니다.


7
이렇게하면 뷰에서 C # 6 기능을 사용할 수 없습니다.
RokX


2

수많은 노력 끝에 .... 그리고이 웹 사이트 에 따르면 . /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=falseMSBuild에서 web.config를 변환 하는 데 사용할 수 있으며 여기에는 빌드에 roslyn 컴파일러도 포함됩니다. 출력은 Visual Studio에서 파일 시스템에 게시하여 얻은 것과 동일합니다.


웹 사이트 링크의 기사를 이해할 수 없지만 MSBuild에 빌드 매개 변수를 추가하라는 조언을 따르면 작동합니다. 말씀하신 것처럼 출력은 파일 시스템에 게시 할 때와 동일합니다. 감사합니다
Bruce

2

이 문제에 대한 roslyn 저장소에 공개 버그 가 있습니다 .

제 경우에는 dll Microsoft.CodeDom.Providers.DotNetCompilerPlatform을 버전 1.0.6에서 1.0.5.


0

2016 년 9 월에 기존 ASP.NET 프로그램을 인수했을 때 동일한 문제가 발생했습니다. Kemal이 언급 한 두 가지 컴파일러 패키지의 여러 버전이 솔루션의 다른 프로젝트에 설치되어 있음을 발견했습니다.

그래서 먼저 그것들을 동일하게 업데이트했습니다. VS는이 시나리오에서 업데이트를 사용할 수 있다고 말하지 않습니다 (또는 놓쳤을 수도 있습니까?)

그런 다음 패키지를 제대로 정리하려면 VS2015를 다시 시작해야했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.