如何在命令行中从 msbuild 配置 csc?
How configure csc from msbuild in command line?
我在 jenkins 上构建解决方案(控制台应用程序 .net 框架 4.6.1 和 .net 标准 2.0 库)时遇到 cs0518 错误(但本地构建没有问题)并尝试修复它。我在日志中发现了 /nostdlib+ csc.exe 参数,它可能是这个错误的 reason。
仅 .net 标准库的错误:
error CS0246: The type or namespace name 'AssemblyTitleAttribute' could not be found
error CS0518: Predefined type 'System.String' is not defined or imported
error CS0246: The type or namespace name 'System' could not be found
error CS0400: The type or namespace name 'System' could not be found in the global namespace
error CS0518: Predefined type 'System.Void' is not defined or imported
...
我在jenkins上用的是MSBuild.exe,它用的是csc.exe(所以不能直接修改csc.exe参数)。我尝试修改 .csproj: <NoStdLib>false</NoStdLib>
,但 /nostdlib+ 还存在。
如何使用 MSBuild.exe 工具 configure csc.exe 或以其他方式解决此问题?
UPD csc 参数:
csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 /debug+ /debug:portable /filealign:512 /optimize- /out:obj\Debug\netstandard2.0\yyy.dll /target:library /warnaserror- /utf8output /deterministic+ kkk.cs "C:\Windows\TEMP\.NETStandard,Version=v2.0.AssemblyAttributes.cs" obj\Debug\netstandard2.0\bbb.AssemblyInfo.cs
库.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
nuget 版本:v4.9.3
msbuild 版本:15.9.21.664
我通过更改管道的操作顺序解决了问题。
需要:
1) msbuild ... \restore
2) nuget restore ...
我在 jenkins 上构建解决方案(控制台应用程序 .net 框架 4.6.1 和 .net 标准 2.0 库)时遇到 cs0518 错误(但本地构建没有问题)并尝试修复它。我在日志中发现了 /nostdlib+ csc.exe 参数,它可能是这个错误的 reason。
仅 .net 标准库的错误:
error CS0246: The type or namespace name 'AssemblyTitleAttribute' could not be found
error CS0518: Predefined type 'System.String' is not defined or imported
error CS0246: The type or namespace name 'System' could not be found
error CS0400: The type or namespace name 'System' could not be found in the global namespace
error CS0518: Predefined type 'System.Void' is not defined or imported
...
我在jenkins上用的是MSBuild.exe,它用的是csc.exe(所以不能直接修改csc.exe参数)。我尝试修改 .csproj: <NoStdLib>false</NoStdLib>
,但 /nostdlib+ 还存在。
如何使用 MSBuild.exe 工具 configure csc.exe 或以其他方式解决此问题?
UPD csc 参数:
csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;DEBUG;NETSTANDARD;NETSTANDARD2_0 /debug+ /debug:portable /filealign:512 /optimize- /out:obj\Debug\netstandard2.0\yyy.dll /target:library /warnaserror- /utf8output /deterministic+ kkk.cs "C:\Windows\TEMP\.NETStandard,Version=v2.0.AssemblyAttributes.cs" obj\Debug\netstandard2.0\bbb.AssemblyInfo.cs
库.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
</Project>
nuget 版本:v4.9.3
msbuild 版本:15.9.21.664
我通过更改管道的操作顺序解决了问题。 需要:
1) msbuild ... \restore
2) nuget restore ...