我正在自动批处理文件中运行msbuild命令。有时,msbuild会忽略我指定的目标框架。这似乎是随机发生的,而且经常使我的工作变慢。
这是设置目标框架的csproj文件的一部分:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1B0B7E3B-8708-4799-B768-1949DA9DD755}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WithoutHaste.DataFiles</RootNamespace>
<AssemblyName>WithoutHaste.DataFiles</AssemblyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
当我注意到这种情况时,我也开始在msbuild命令中指定目标框架。这应该覆盖csproj文件中的任何设置。
msbuild DataFiles.net20.csproj /P:TargetFrameworkVersion=v2.0;Configuration=Debug -fl -flp:logfile=logs\DataFilesOutput.net20.Debug.log;verbosity=normal
我已经确认编译后的库针对的框架错误。
1)将库添加到.Net 2.0项目时,出现“间接依赖项”错误。查看库属性还显示将“运行时版本”设置为“ v4.0”,而不是“ v2.0”。
2)使用反射加载程序集,Assembly.ImageRuntimeVersion设置为“ v4.0”,而不是“ v2.0”。
有什么想法为什么有时会发生?