C# 从命令行重写目标框架
我想使用C# 从命令行重写目标框架,c#,msbuild,C#,Msbuild,我想使用msbuild从命令行生成一个c#项目(.csproj),并以.Net2.0运行时为目标 我看到项目xml文件有两个感兴趣的标记 <Project ToolsVersion="4.0" ... 您需要msbuild的命令行参数才能执行此操作: msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5 然后覆盖项目文件和工具版本中的值 要查找使用的msbuild版本默
msbuild
从命令行生成一个c#
项目(.csproj),并以.Net2.0运行时为目标
我看到项目xml文件有两个感兴趣的标记
<Project ToolsVersion="4.0" ...
您需要msbuild的命令行参数才能执行此操作:
msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5
然后覆盖项目文件和工具版本中的值
要查找使用的msbuild版本默认值,请启动Visual Studio命令提示符(位于“开始”菜单>“Microsoft Visual Studio 2010”>“Visual Studio工具”中),然后键入msbuild。
输出的第一行将保存您的内置发动机版本:
Microsoft(R)生成引擎版本4.0.30319.1
从msdn文档:
MSBuild使用一组任务、目标和工具来构建
应用通常,MSBuild工具集包括
microsoft.common.tasks文件、microsoft.common.targets文件和
编译器,如csc.exe和vbc.exe。大多数工具集可用于
将应用程序编译到.NET Framework的多个版本
以及多个系统平台
您还可以检查环境变量以获取安装的框架版本:
Visual Studio命令提示符中的set F
提供以下结果:
Framework35Version=v3.5FrameworkDir=c:\Windows\Microsoft.NET\Framework\
FrameworkDIR32=c:\Windows\Microsoft.NET\Framework\
FrameworkVersion=v4.0.30319
FrameworkVersion32=v4.0.30319
如果toolsversion设置为4.0,生成的程序集是否会在v2.0运行时运行?是的,tv仅指示msbuild用于为请求的Framework生成程序集的工具(目标/编译器等)我看到在文件夹v2.0、v3.0和v4.0中有多个msbuild.exe,每个都有一个,哪一个最适合使用我不介意,使用运行默认值的。我希望它总是来自安装最高的工具集。因此,如果安装了4.0,它将使用4.0 msbuild。我无法从任何其他路径运行msbuild,除非我从框架目录本身运行它。是否有其他方法检查默认msbuild版本
msbuild myproj.csproj /p:Configuration=Release
msbuild.exe MyProj.proj /p:TargetFrameworkVersion=v2.0;Configuration=Release /tv:3.5