我在 VS 2010 和 2012 中针对 .NET 2.0 构建 VB 项目都没有问题。
但是,MSBuild 拒绝构建它,因为它不喜欢 VS 2010 中引入的一项 VB 语言功能(更具体地说,是“隐式行延续”)。
我尝试了 MSBuild 的以下参数(来自 .NET 3.5):
/p:TargetFrameworkVersion=2.0
/toolsversion:3.5
这不会构建,因为我使用的 VB 功能已在 4.0 工具中引入。
所以我将工具版本更改为 4.0(并使用 .NET 4.0 中的 MSBuild):
/p:TargetFrameworkVersion=2.0
/toolsversion:4.0
现在 MSBuild 抱怨另一件事:
C:\Users\Libor\AppData\Local\Temp\.NETFramework,Version=2.0.AssemblyAttributes.vb(6,24):
error BC30002: Type 'System.Runtime.Versioning.TargetFrameworkAttribute' is not defined.
[project.vbproj]
现在对我来说唯一的解决方案是在 VS 2008 中打开我的项目并手动更正代码,使其与所有工具兼容。但我希望可以配置 MSBuild,以便它可以正确构建,因为 VS 也可以针对 .NET 2.0 构建项目。
类似的问题和答案这里。 他们的关键是:
msbuild YourSolution.sln /tv:4.0 /p:TargetFrameworkVersion=v2.0