我们有一个网站项目,安装了以下 nuget 软件包
Microsoft.CodeDom.Providers.DotNetCompilerPlatform - 1.0.8
Microsoft.Net.Compilers - 2.4.0
The 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.8.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.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
本地构建工作正常。当。。。的时候DotNetCompilerPlatform
已安装安装.ps1该脚本在 bin 中创建 Roslyn 文件夹并将 csc.exe 等复制到该文件夹。
该代码由第三方编写并提交给我们的 VSTS 存储库。我想使用 VSTS 通过我们的测试/阶段和生产环境来构建和部署网站。
VSTS 构建管道获取源,然后恢复包并在解决方案上运行 Visual Studio 构建任务。这是一个网站项目,因此不是该网站的项目。构建失败并出现以下错误
ASPNETCOMPILER(0,0): 错误 ASPRUNTIME: 找不到部分
路径“xxxxxxxxx\bin\roslyn\csc.exe”。
由于构建只是对 R 包进行恢复oslyn 二进制文件不会复制到 bin.
我还尝试从项目中删除软件包并从项目中删除编译器web.config
但随后出现错误。
错误 CS1056:意外字符“$”
我正在使用一些较新的语言功能。
我真的很想自动化预编译和发布,因为目前有太多手动步骤容易出错或滥用。
我的一个想法是在包恢复之后在构建管道中添加一个步骤来运行安装.ps1来自DotNetCompilerPlatform
package 文件夹有望将编译器工具复制到 bin 中。即模仿安装包时所做的事情。但在走这条路之前,我想看看是否有更好的解决方案。