我在尝试创建面向多框架的 NuGet 包时遇到了类似的问题。将目标框架设置为 3.5 时,代码在 Visual Studio 2010 中编译良好,但未在命令行编译。经过一些实验,我找到了一个成功的命令行解决方案,尽管我并不完全清楚根本问题是什么。
以供参考:
使用 4.0 引用成功编译程序集(通过 DotPeek 检查确认):
C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v4.0;ToolsVersion=4.0 /t:Rebuild
注意 MSBuild 输出:
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]
使用 2.0/3.5 引用成功编译程序集(通过 DotPeek 检查确认):
C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild
注意 MSBuild 输出:
Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.296]
编译失败:
C:\BuildAgent\work\efbf25fbf21ee436>C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe My.csproj /p:Configuration=Release;TargetFrameworkVersion=v3.5;ToolsVersion=3.5 /t:Rebuild
注意 MSBuild 输出:
Microsoft (R) Build Engine Version 3.5.30729.4926
[Microsoft .NET Framework, Version 2.0.50727.4984]