我已在我的 Visual Studio 2015 解决方案中将Microsoft.CodeDom.Providers.DotNetCompilerPlatform添加到我的网站,以使用Nuget提供一些C#6功能。一切运行并在当地建立良好。
我已将代码检入TFS并为其创建了构建任务。但是,当通过TFS构建时,我收到以下错误:
ShowcasePortal\web.config(20,0): Error ASPCONFIG: The CodeDom provider type "Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" could not be located.
执行行时:
Build:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /localhost_15584 -p ShowcasePortal\ -u -f PrecompiledWeb\localhost_15584\
这些都是在visual studio online上托管的。
有没有得到这个版本?
更新
我默认注意到Bin文件夹没有自动签入。这有本地的Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll以及roslyn文件夹。我已经将它添加到源代码控制中(不太确定是否需要添加Roslyn文件夹。一旦添加它就可以了。
packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.2" targetFramework="net461" />
<package id="Microsoft.Net.Compilers" version="1.3.2" targetFramework="net461" developmentDependency="true" />
</packages>
构建定义
构建定义如下所示:
这只是一个针对解决方案的沼泽标准构建,我没有做任何特殊的构建。
更新12月8日
我将bin \ Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll.refresh文件添加到版本控制并启动了一个构建,它给了我以下错误:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /localhost_15584 -p ShowcasePortal\ -u -f PrecompiledWeb\localhost_15584\
ASPNETCOMPILER(0,0): Error ASPRUNTIME: Could not find a part of the path 'C:\a\1\s\ShowcasePortal\bin\roslyn\csc.exe'.
现在我的机器本地存在bin \ Roslyn文件夹。这没有签入。
nuget上有另一个名为Microsoft.CodeDom.Providers.DotNetCompilerPlatform.BinFix的软件包。我安装了这个并尝试了云构建。这没用 - 它出现了同样的错误(找不到csc)。
工作解决方案
添加Microsoft.CodeDom.Providers.DotNetCompilerPlatform包后,它会带来依赖的Microsoft.Net.Compilers包。这会将文件Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll添加到网站Bin文件夹中。还有一个Bin \ Roslyn文件夹,该文件夹未添加到解决方案中。它包含各种编译器二进制文件。一旦将Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll检入版本控制以及所有Bin \ Roslyn文件,云服务器构建将成功编译。
答案 0 :(得分:1)