由于不同版本的客户端计算机的部署要求,我需要在.NET 2.0和.NET 4.0中构建一个库。我为每个项目创建了一个配置,然后修改了vbproj文件,将目标框架版本移动到条件属性组中,如下所示:
<PropertyGroup>
(omitted build configuration independent settings)
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'NET20'">
<DefineConstants>NET20</DefineConstants>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' != 'NET20'">
<DefineConstants>NET40</DefineConstants>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
如果我使用VS2015中的NET20配置或使用命令行中的msbuild构建,我的dll将编译为.NET 2.0。但是,如果我使用VS2013或以下构建,我的构建编译为.NET 4.0。不幸的是,我工作的公司需要我们的解决方案在VS2013中工作,所以我不能告诉人们使用20
使用dotPeek查看我的VS 2013 references与VS 2015 references相比时,我看到了一些差异。 VS2013版本具有Microsoft.VisualBasic 10.0.0.0,mscorlib为2.0.0.0和4.0.0.0。 VS2015版本具有Microsoft.VisualBasic 8.0.0.0和mscorlib 2.0.0.0。
我不会在项目文件中的任何位置添加这些引用,它们似乎是自动添加的。我看到有一个NoStdLib元素有intellisense文档说如果设置为true它将不会自动包含像mscorlib这样的引用。当我尝试将其设置为true但是它似乎没有修复任何东西。我欢迎任何有关在VS2013中构建此库的建议。