找不到路径的一部分... bin\roslyn\csc.exe

Eya*_*yad 635 .net c# asp.net asp.net-mvc roslyn

我正在尝试运行从TFS源代码控制中检索的Asp.net MVC项目.我添加了所有程序集引用,我能够成功构建和编译,没有任何错误或警告.

但是我在浏览器中收到以下错误:

找不到路径'C:\ B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe'的一部分.

以下是错误页面的完整屏幕截图.

在此输入图像描述

经过几天的研究,我了解Roslyn是.Net编译器平台,提供高级编译功能.但是,我不明白为什么我的构建试图找到\ bin\roslyn\csc.exe,因为我没有配置任何与Roslyn相关的东西,也没打算在我的项目中使用Roslyn.

and*_*250 834

在我的情况下,解决方案是重新安装/升级Nuget包:

  • Microsoft.Net.Compilers 1.1.1
  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.1

然后我查看.csproj并确保包的路径是正确的(在我的情况下..\..\packages\*.*)Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r在顶部的标签内部,并在<ImportProject>底部名称为"EnsureNuGetPackageBuildImports".这是在MVC 5和.NET Framework 4.5.2上.

简短回答 - 在Package Manager控制台中运行:

<Target>

  • 我很确定这是最好的解决方案...我自己尝试使用update-package -reinstall -projectname myprojectname (14认同)
  • 这是我的问题 - 在创建项目时bin/roslyn文件夹就在那里,但是,如果你删除它,或者像源代码控制一样,它不会被复制,那么就不会重建它.我认为版本存在一些"同步"问题,一旦安装了1.0.1并将proj文件中的Import更新为正确的版本,构建将自动复制Roslyn文件夹 - 不需要任何这些帖子构建命令. (9认同)
  • 一个注意事项:Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget包的1.0.3版适用于我,但版本1.0.6导致此问题中的错误. (8认同)
  • 1.0.6有一个错误:https://github.com/aspnet/RoslynCodeDomProvider/issues/13 (5认同)
  • 完成所有这些后,我的项目没有任何改变.bin文件夹仍然是扁平的. (4认同)
  • 从1.0.6降级到1.0.3为我解决了这个问题.我将把它添加为顶级答案 (2认同)

Mit*_*ell 355

默认VS2015模板的问题是编译器实际上没有复制到tfr\bin\roslyn \目录,而是复制到{outdir}\roslyn \目录

在.csproj文件中添加以下代码:

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

  • 这不能解决我的问题.现在我得**'无法找到文件'C:\ B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe'**.请注意,当我在VS2015中创建一个新的MVC项目时,我没有看到.csproj中提到的配置,它在浏览器中运行得很好 (9认同)
  • 我发现将Microsoft.CodeDom.Providers.DotNetCompilerPlatform更新为1.0.8,Microsoft.Net.Compilers 2.6.1帮助了我很多.我不需要添加这个额外的目标.在更高版本的工具中添加了类似的东西:https://github.com/aspnet/RoslynCodeDomProvider/commit/9408cd2aa2e394897564a0b8cd94b9350c0a3f89 (5认同)
  • 谢谢。下载Roslyn目录并将其放在/ bin文件夹中后,现在可以在浏览器中构建和运行该项目。我没有放置上面提到的PstBuildEvent,它仍然可以工作。也许您想在上面编辑答案,并提到需要手动放置Roslyn文件并更好地反映解决方案的需要。 (4认同)
  • 我已经从Nuget将Microsoft.Net.Compilers的版本更新到版本2.10.0,它一直是我的解决方案.我正在使用targetFramework ="4.6.2" (3认同)
  • 不要仅仅因为 VisualStudio 不工作就向您的解决方案添加代码!看看下面的其他答案。 (3认同)
  • 好吧,在正常情况下;您应该将编译器放在$(OutDir)roslyn \ *。*文件夹中,因此此脚本会将编译器复制到项目的binfolder中。显然,您安装的vs2015不包含编译器。 (2认同)
  • 这应该工作而无需修改proj文件。那只是解决症状。进行完全重建应该导致这些文件在那里。 (2认同)

Mal*_*lil 161

您的构建试图找到,\bin\roslyn\csc.exe因为在您的项目中添加了以下包.packages.config只需查看您的文件,您可以在那里使用它们

Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Microsoft.Net.Compilers
Run Code Online (Sandbox Code Playgroud)

什么是Roslyn和谁在项目中添加它们(包):如果您使用.net Framework 4.5.2使用VS2015创建项目,您可能已经注意到项目模板默认使用Roslyn.实际上,Roslyn是 Microsoft的.NET语言的开源编译器之一.

我们为什么要删除Roslyn: 如果您的项目有Roslyn引用并且您有兴趣部署它没有服务器,那么您将在网站上收到不需要的错误,因为许多托管服务提供商仍然没有升级其服务器,因此不支持Roslyn.要解决此问题问题,您需要从项目模板中删除Roslyn编译器.

如果您对使用Roslyn不感兴趣,请 按照下面的步骤删除它

1. 删除Nuget包,使用Nuget Package Console中的以下命令

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
Run Code Online (Sandbox Code Playgroud)

2. 执行此操作后,应自动更新web.config文件.如果不是,请在web.config文件中查找以下代码,如果找到,请删除这段代码.

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"></compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"></compiler>
    </compilers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)

  • 如果你真的想要*使用新的编译器和新功能,这不是真正的解决方案. (24认同)
  • 你是在倡导对抗未来. (14认同)
  • @cchamberlain为什么是未来?我认为应该使用它,但看起来很多人都遇到了麻烦. (2认同)
  • @Alisson - Roslyn 是事情发展的方向。它包含更新的语言功能,性能更高,跨平台且开源。它是在其他工具之后出现的 - 因此是未来。没有任何说明您需要使用它,大多数升级都会产生一些费用。请参阅“为什么要在 ASP.NET 中进行 Roslyn 编译?” 部分:https://blogs.msdn.microsoft.com/webdev/2014/05/12/enabling-the-net-compiler-platform-roslyn-in-asp-net-applications/ (2认同)
  • 如果您想将 MVC 项目发布到 GoDaddy 共享 Windows 托管,这就是答案。GoDaddy 不运行 csc.exe 等可执行文件 (2认同)

pip*_*omb 112

清洁和重建对我有用!

编辑:评论者说清洁步骤是没有必要的.你可以重建.

  • 只是重建对我没有用。.清理+重建后错误消失了。 (8认同)
  • DotNetCompilerPlatform 1.0.3、Microsoft.Net.Compilers 1.3.2、VS Pro 2017 15.9.4 在这里。即使在重新启动 Visual Studio 之前和之后,清理/重建对我也不起作用。最后,一个 Build &gt; Batch Build... &gt; Rebuild All 成功了。它一定是低声说的恰到好处,让 VS 看到它在输出中丢失了 bin/roslyn 目录。 (5认同)
  • 我不认为清洁是必需的.根据对该问题的讨论,**重建**而不是常规构建将始终将roslyn文件放回原处.https://github.com/dotnet/roslyn/issues/15556 (4认同)
  • Clean and Rebuild 对我有用。对于那些说只进行重建就可以工作的人...重建的行为可以修改,并不总是只进行清理和构建。请参阅 [this answer] (/sf/answers/87323631/) 的 #2。 (3认同)

Rob*_*non 57

这是一个更多的MSBuild方法.

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" Condition="!$(Disable_CopyWebApplication) And '$(OutDir)' != '$(OutputPath)'">
    <ItemGroup>
      <RoslynFiles Include="$(CscToolPath)\*" />
    </ItemGroup>
    <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
    <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

但我注意到roslyn文件也在我的bin目录中(不在文件夹中).该应用程序似乎工作.

  • 您可以将它放在.csproj文件中的任何位置,与另一个<Target>标记位于同一级别.我通常把它放在底部. (4认同)

小智 48

为时已晚,但仍然张贴以防万一它对任何人都有帮助。
按照以下步骤为我修复了错误:

  1. 删除包文件夹
  2. 开VS
  3. 重建
  4. 观察 NuGet 包已恢复,但 bin\roslyn 未创建
  5. 卸载项目
  6. 重新加载项目
  7. 重建
  8. 观察 bin\roslyn 现在已经创建。


Chr*_*vén 29

GitHub上Roslyn项目中的一个问题所述,一种解决方案(对我有用)是简单地在Visual Studio中卸载和重新加载该项目。

在重新加载项目之前,“ bin \ roslyn”文件夹不是在构建或重建时创建的。

  • 有人可以给这个人做个鸡肉晚餐吗? (7认同)

Mas*_*ian 22

我按照这些步骤完成了它

  • 删除所有bin和obj文件夹
  • 清洁解决方案并重建
  • 在powershell中运行此命令

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r


jos*_*son 21

在尝试了所有没有雪茄的修复后,我通过更新Visual Studio中的Nuget包来修复它:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform

我从1.0.0到2.0.0作为参考(错误不再显示)

  • 这对我来说很高兴。对于我的项目,即使2.0.0太低,它也要求2.0.1。 (2认同)
  • 这为我解决了。我降级了必须解决此问题的版本,然后又更新回最新版本。 (2认同)

Hen*_*nke 18

正如已指出 了目前最高的投票答案,速战速决是使用包管理器,Tools> Nuget Package Manager> Package Manager Console,以运行

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
Run Code Online (Sandbox Code Playgroud)

数据包管理器控制台 - 如何打开


这是重现错误的代码:
http : //henke.atwebpages.com/SrvrErr-reproduce.zipfile 1
(最初来自 https://github.com/aspnet/AspNetDocs/tree/master/aspnet/web-api/overview /advanced/calling-a-web-api-from-a-net-client/sample/server/ProductsApp )

考虑尝试上面 zip 文件中提供的示例代码。
如果未进行任何更改,Ctrl+F5将重现该错误。

应用程序中的服务器错误“/”


更强大的解决方案

另一种解决方案是从项目Web.config文件中删除一个属性 。
Web.config.csproj文件位于同一目录中。)
如果它们丢失,这将自动且静默地重新创建您的包。

Web.config在文本编辑器或 Visual Studio 中打开文件。

Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
Run Code Online (Sandbox Code Playgroud)

在标签configuration> system.codedom> compilers> 中compiler language="c#;cs;csharp",完全删除该type属性。– 简而言之,删除以 开头的行 type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, 2

Visual Studio 将负责其余的工作。– 没有了Server Error in '/' Application


在上面提供的示例中,点击Ctrl+F5现在将导致HTTP 错误 403

HTTP 错误 403.14 - 禁止

尝试http://localhost:64195在您的 Web 浏览器中替换为 http://localhost:64195/api/products. Web API 现在可以正确显示:

包含产品的 Web API

作为挑衅,我尝试package从 Visual Studio 项目中删除整个目录。
重建项目后,它会自动且无声地重新创建。


1请将扩展名从 重命名zipfilezip
2据推测,相同的修复程序适用于 Visual Basic 和 C#,但我还没有尝试过。

  • 这解决了我的问题,第 2 点解决了问题!谢谢。 (2认同)

Sha*_*uti 16

对于 VS 2019,完全删除以下节点:

<system.codedom>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)


小智 15

NuGet包管理器

您需要安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix,特别为该错误创建

  • 我不是从昵称“ dsx”的随机人那里安装随机软件包。那是很大的安全性... (7认同)

G. *_*nev 15

就我而言,在尝试任何其他解决方案之前,我切换到“发布”配置,重建(文件夹已创建)然后切换回“调试”,而文件夹保持完整。

这是从旧解决方案的源代码控制中签出的,显然原始(自动)包还原和构建项目没有在 bin 目录中创建该文件夹。

请注意,在撰写本文时,被指责的组件已达到 v.2。


小智 14

  • 右键单击您的项目,然后选择“管理Nuget程序包”
  • 找到“ Microsoft.CodeDom.Providers.DotNetCompilerPlatform”
  • 只需更新到旧版本或新版本(无关紧要),然后再次更新回原始版本。

这将重新安装软件包的所有依赖项和文件(例如csc.exe)

Nuget-DotNetCompilerPlatform


小智 12

  1. 清洁溶液
  2. 重建解决方案,这两个步骤对我有用。


jon*_*bot 11

因此,Rob Cannon的答案基本上对我有用,但我不得不调整一些选项.具体来说,我必须删除目标上的条件,以及更改Include属性,因为在我们的构建服务器上构建项目时$ CscToolPath为空.奇怪的是,$ CscToolPath在本地运行时不是空的.

<Target Name="CopyRoslynFiles" AfterTargets="AfterBuild" >
  <ItemGroup>
    <RoslynFiles Include="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*" />
  </ItemGroup>
  <MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
  <Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" />
</Target>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果Microsoft.Net.Compilers的版本发生更改,此解决方案将失败(或必须进行调整). (3认同)

jru*_*ell 10

这是一个已知的问题Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.6.降级到1.0.5为我解决了这个问题.


小智 9

更新nuget包对我有用右键单击解决方案>管理NuGet包以获得解决方案并更新所有包,特别是: Microsoft.Net.CompilersMicrosoft.CodeDom.Providers.DotNetCompilerPlatform


小智 8

在我的情况下,我只需要转到Visual Studio Solution Explorer(Web应用程序项目)中的bin目录并直接包含roslyn项目.通过右键单击该文件夹并选择"包括在项目中".并再次检查解决方案以触发构建过程.

默认情况下不包含roslyn文件夹.


Jas*_*yne 8

根据Daniel Neel的评论:

版本1.0.3的Microsoft.CodeDom.Providers.DotNetCompilerPlatform Nuget包适用于我,但版本1.0.6导致此问题中的错误

降级到1.0.3为我解决了这个问题.

  • 1.0.6有一个错误:https://github.com/aspnet/RoslynCodeDomProvider/issues/13 (3认同)
  • 在某些情况下,1.0.7仍然受到影响https://github.com/aspnet/RoslynCodeDomProvider/issues/17 (2认同)

may*_*ʎɐɯ 8

在我的情况下,我在Jenkins尝试在Octopus中部署它时遇到以下错误:

MSBUILD : OctoPack error OCT-1676060969: Failed to build the path for '\bin\roslyn\csc.exe' relative to 'T:\workspace\machine.engine\Machine.engine.Test': Invalid URI: The format of the URI could not be determined.. See the inner exception for more details. [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969: System.Exception: Failed to build the path for '\bin\roslyn\csc.exe' relative to 'T:\workspace\machine.engine\Machine.engine.Test': Invalid URI: The format of the URI could not be determined.. See the inner exception for more details. ---> System.UriFormatException: Invalid URI: The format of the URI could not be determined. [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind) [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at System.Uri..ctor(String uriString) [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.Util.OctopusPhysicalFileSystem.GetPathRelativeTo(String fullPath, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\Util\OctopusPhysicalFileSystem.cs:line 211 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    --- End of inner exception stack trace --- [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.Util.OctopusPhysicalFileSystem.GetPathRelativeTo(String fullPath, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\Util\OctopusPhysicalFileSystem.cs:line 224 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.CreateOctoPackPackage.AddFiles(XContainer nuSpec, IEnumerable`1 sourceFiles, String sourceBaseDirectory, String targetDirectory, String relativeTo) in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\CreateOctoPackPackage.cs:line 443 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
MSBUILD : OctoPack error OCT-1676060969:    at OctoPack.Tasks.CreateOctoPackPackage.Execute() in Z:\buildAgent\workDir\20ba9f2e0d5e4022\source\OctoPack.Tasks\CreateOctoPackPackage.cs:line 190 [T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj]
Done Building Project "T:\workspace\machine.engine\Machine.engine.Test\Machine.engine.Test.csproj" (default targets) -- FAILED
Run Code Online (Sandbox Code Playgroud)

原因

花了一些时间后,我正在使用一个正在使用的内部开发组件Microsoft.Net.Compilers.内部组件使用的原因Microsoft.Net.Compilers是为了克服这个问题(C#:抛出无效的表达式编译)并以这种方式解决(如何在Visual Studio 2015中使用c#7?).这导致,当我在主程序上安装了主管时,Microsoft.Net.Compilers自动添加它自己.

我的工作是,从我们的内部组件卸载以下(按照@malikKhalil回答)

PM> Uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Uninstall-package Microsoft.Net.Compilers
Run Code Online (Sandbox Code Playgroud)

并选择了Jenkins中的C#7编译器而不是C#6并重建,这是为了确保一切正常并正确构建.

最后在我的主程序中,我试图更新我的内部组件.而且还有一切都要再建造.它没有任何问题或问题.


小智 7

将Microsoft.CodeDom.Providers.DotNetCompilerPlatform从1.0.0升级到1.0.1为我解决了这个问题.


小智 6

打开项目文件并删除所有引用与Import Project ="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 ....

打开web.config并删除所有system.codedom编译器属性


Mar*_* C. 5

就我而言,与 Basim 类似,有一个 NuGet 包告诉编译器我们需要 C# 6,而我们没有。

我们必须删除 NuGet 包Microsoft.CodeDom.Providers.DotNetCompilerPlatform,然后删除:

  1. <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" /> 从packages.config文件
  2. <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> </compilers> </system.codedom>

system.codedom节点中,您可以看到为什么要引入 roslyn:compilerOptions="/langversion:6


Kor*_*yem 5

默认VS2015模板的问题是编译器实际上并未复制到{outdir}_PublishedWebsites\tfr\bin\roslyn\目录,而是{outdir}\roslyn\目录.这可能与您的本地环境不同,因为AppHarbor使用输出目录构建应用程序而不是"就地"构建解决方案.

要修复它,请.csproj在xml块之后立即向文件末尾添加以下内容<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">...</Target>

<PropertyGroup>
  <PostBuildEvent>
    if not exist "$(WebProjectOutputDir)\bin\Roslyn" md "$(WebProjectOutputDir)\bin\Roslyn"
    start /MIN xcopy /s /y /R "$(OutDir)roslyn\*.*" "$(WebProjectOutputDir)\bin\Roslyn"
  </PostBuildEvent>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

参考:https://support.appharbor.com/discussions/problems/78633-cant-build-aspnet-mvc-project-generated-from-vstudio-2015-enterprise


Anr*_*iņš 5

如果你在MVC中添加ASPNETCOMPILER来编译你的Razor视图,就像在这个StackOverflow问题中那样,那么将PhysicalPath更改为Roslyn nuget包所在的位置(通常通过$ CscToolPath变量指向):

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
<AspNetCompiler VirtualPath="temp" PhysicalPath="$(CscToolPath)" />
Run Code Online (Sandbox Code Playgroud)


小智 5

删除解决方案资源管理器中的 Bin 文件夹并再次构建解决方案。这样就能解决问题


Ale*_*mon 5

当一切都在本地主机上完美运行时,我在服务器上安装我的应用程序时遇到了同样的问题。

这些解决方案都没有奏效,我总是有同样的错误:

Could not find a part of the path 'C:\inetpub\wwwroot\myApp\bin\roslyn\csc.exe'
Run Code Online (Sandbox Code Playgroud)

我最终这样做了:

  • 在我的安装项目中,右键单击,查看 > 文件系统
  • 创建bin/roslyn文件夹
  • 选择添加>文件并添加所有文件 packages\Microsoft.Net.Compilers.1.3.2\tools

这解决了我的问题。


Nar*_*dra 5

在运行项目时,我也遇到了同样的问题。这是我遵循的步骤。

  1. 右键单击解决方案
  2. 选择清洁溶液
  3. 清理成功后,重新构建您的项目
  4. 再次运行项目

    这次我没有看到相同的错误。这按预期工作


Mir*_*mec 5

我有没有 csproj 文件的 webproject,这里提到的解决方案对我不起作用。

更改目标 .NET 框架、重新安装包 ( Update-Package -reinstall) 然后构建项目对我有用。您甚至可以在此操作后更改目标框架(确保您之后再次重新安装 nuget 包)。


Jua*_*rtí 5

就我而言,仅删除bin文件夹中的所有内容并重新编译即可完成所有工作。

祝所有遇到此问题的人好运。

  • 我认为这更简单有效。通常,将项目从存储库克隆到新的computir后,我会收到此错误。 (2认同)