我正在尝试运行从TFS源代码控制中检索的Asp.net MVC项目.我添加了所有程序集引用,我能够成功构建和编译,没有任何错误或警告.
但是我在浏览器中收到以下错误:
找不到路径'C:\ B8akWorkspace\B8akProject\B8akSolution\B8AK.Portal\bin\roslyn\csc.exe'的一部分.
以下是错误页面的完整屏幕截图.
经过几天的研究,我了解Roslyn是.Net编译器平台,提供高级编译功能.但是,我不明白为什么我的构建试图找到\ bin\roslyn\csc.exe,因为我没有配置任何与Roslyn相关的东西,也没打算在我的项目中使用Roslyn.
我有一个.NET MVC项目,我正在尝试使用Jenkins进行部署.
我一直让Jenkins运行msbuild,然后使用RoboCopy复制生成的文件.我想切换到只使用发布配置文件.发布配置文件在我的本地计算机上使用Visual Studio正常工作,但在Jenkins主机上它使用msbuild失败.
它给出的错误是
ASPNETCOMPILER:错误ASPRUNTIME:找不到路径'C:\ Program Files(x86)\ Jenkins\jobs\myProject\workspace\myProject\_ obj\Debug\AspnetCompileMerge\Source\bin\roslyn\csc.exe'的一部分.[C:\ Program Files(x86)\ Jenkins\jobs\myProject\workspace\myProject\calendar.csproj]
我正在使用Microsoft.Net.Compilers nuget包来引入C#编译器,因为项目中的一些协作者仍在Visual Studio 2013上,但我们在项目中使用了C#6语言功能.
事实上,在添加发布标志之前,项目在jenkins上使用MSBuild构建得很好.它只是在添加/p:DeployOnBuild=true;PublishProfile=MyProfile它开始失败的设置之后......但是使用Visual Studio,发布步骤工作得很好,而且roslyn编译器甚至被复制到本地机器上的obj\Debug\AspnetCompileMerge\Source\bin \文件夹中.是什么赋予了?
老实说,既然msbuild14在Jenkins服务器上可用,它可能甚至不需要 roslyn csc.exe文件.有没有办法让msbuild忽略它?
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<publishUrl>\\myserver\someshare\mysite</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>True</EnableUpdateable>
<DebugSymbols>False</DebugSymbols>
<WDPMergeOption>DonotMerge</WDPMergeOption>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我试过更新编译器包.
我在.csproj文件中添加了步骤,将丢失的编译器文件强制复制到AspnetCompileMerge目录(我已经将它们复制到bin\roslyn目录以解决 另一个问题)
<Target Name="CopyRoslynFiles" AfterTargets="BeforeBuild">
<ItemGroup>
<RoslynFiles Include="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*" Exclude="$(SolutionDir)packages\Microsoft.Net.Compilers.1.1.1\tools\*.sys" />
</ItemGroup>
<MakeDir Directories="$(WebProjectOutputDir)\bin\roslyn" />
<MakeDir Directories="$(WebProjectOutputDir)\obj\$(Configuration)\AspnetCompileMerge\Source\bin\roslyn" />
<Copy SourceFiles="@(RoslynFiles)" DestinationFolder="$(WebProjectOutputDir)\bin\roslyn" SkipUnchangedFiles="true" Retries="$(CopyRetryCount)" RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)" /> …Run Code Online (Sandbox Code Playgroud)