gpt4 book ai didi

c# - VSTS 构建失败/发布无法在 bin 文件夹中找到 roslyn\csc.exe

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:12 24 4
gpt4 key购买 nike

我们有一个安装了以下 nuget 包的网站项目

Microsoft.CodeDom.Providers.DotNetCompilerPlatform - 1.0.8

Microsoft.Net.Compilers - 2.4.0

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=\&quot;Web\&quot; /optionInfer+" />
</compilers>
</system.codedom>

构建在本地运行良好。安装 DotNetCompilerPlatform 后,install.ps1 脚本会在 bin 中创建 Roslyn 文件夹,并将 csc.exe 等复制到该文件夹​​。

该代码由第三方编写并提交给我们的 VSTS 存储库。我想使用 VSTS 通过我们的测试/阶段和生产环境构建和部署网站。

VSTS 构建管道获取源代码,然后恢复包并在解决方案上运行 Visual Studio 构建任务。这是一个网站项目,因此该网站没有项目。构建失败并出现以下错误

ASPNETCOMPILER(0,0): Error ASPRUNTIME: Could not find a part of the path 'xxxxxxxxxx\bin\roslyn\csc.exe'.

由于构建只是恢复包,因此 Roslyn 二进制文件不会复制到 bin

我还尝试从项目中删除包并从 web.config 中删除编译器,但随后出现错误。

Error CS1056: Unexpected character '$'

我在哪里使用了一些较新的语言功能。

我真的很想自动化预编译和发布,因为目前有太多容易出错或滥用的手动步骤。

一个想法是在包恢复后在构建管道中添加一个步骤,以运行 DotNetCompilerPlatform 包文件夹中的 install.ps1,这有望复制编译工具到bin。即模仿安装包时所做的事情。但在我走这条路之前,我想看看是否有更好的解决方案。

最佳答案

一个建议是更新您的 '.csproj' 以更改您的构建定义(在代码本身中),如下所示,以复制 roslyn直接进入 bin 文件夹,而不是 默认输出目录

<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>

Refer this SO

这样您就无法更改 VSTS 构建定义

关于c# - VSTS 构建失败/发布无法在 bin 文件夹中找到 roslyn\csc.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52085755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com