指定的解决方案使用的MSBuild项目文件(specify project file of a so

2019-07-05 14:00发布

我想使用的MSBuild像我们这样构建一个解决方案的特定项目,devenv.com.In devenv.com命令行,我们可以指定使用以下命令行一个一个解决方案项目

devenv.com /Build Release|x86 test.sln /project "testproject"

使用上述命令行我可以建立在使用devenv.com.What的test.sln的testproject为的msbuild为同一溶液中的命令行。

谢谢

Answer 1:

msbuild test.sln /t:project /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

请注意,是什么赋予/t是在溶液中的项目名称,也可以是从项目的文件名不同。

此外,如在规定建立在使用MSBuild.exe解决方案的具体目标:如何 :

如果项目名称中包含的任何字符%$@;.() ,或' ,与替换它们_在指定的目标名称。

您也可以一次建立多个项目:

msbuild test.sln /t:project;project2 /p:Configuration="Release" /p:Platform="x86" /p:BuildProjectReferences=false

要重建或清洗,更换/t:project/t:project:clean/t:project:rebuild



Answer 2:

实际的MSBuild通过使用项目而不是解决方案的工作。 该解决方案仅用于解析它进入的MSBuild一个临时项目文件内。 你应该能够只是建立感兴趣的项目直接通过的MSBuild通过执行以下命令。

"msbuild testproject /p:Configuration=Release /p:Platform=x86"

还有就是我知道你可能会遇到使用项目,而不是直接的解决方案的一个主要问题:如果你使用该解决方案来表达的,而不是添加引用到项目,并让构建系统会自动计算出依赖的项目之间的依赖关系, 。

如果您正在使用SLN文件执行的生成顺序,我建议您直接工作的这些依赖到该凸出文件,并从SLN删除它们。 这将允许您从MSBuild的直接调用任何凸出文件和项目都将独立建立一个没有任何额外的工作。 你真的应该把SLN文件作为一组项目,使在Visual Studio中的工作更容易,而不是作为构建输入。



Answer 3:

发布的信息对未来求职者

添加以下到构建脚本并运行一次。 这将产生精确的目标和其他信息的MSBuild将实际使用。

例如:如果你有. 在项目名称或文件夹的MSBuild将期待_到位的.

set MSBuildEmitSolution=1

获得后,信息更新所需的细节构建脚本。



Answer 4:

只需添加额外的信息,在项目文件夹执行的MSBuild将默认生成项目文件,因为它是唯一一个在那里。

>msbuild

有使用的MSBuild这样的许多变化。 您可以直接指定,该凸出文件。

>msbuild helloworld.csproj -t:Build.

查看使用,PROJ文件的要求,以及对MSBuild的文档和建设项目,而不是解决方案的好处。

MS的MSBuild文档

有作为马克 - 史密斯上述建设这种方式的好处。



Answer 5:

为了做到这一点,你需要知道这个项目的目标名字 ,不一定是项目名称。

发现这一点的一种方法是所谓的一个特殊的环境变量设置后使用的MSBuild对你的SLN与预期参数MSBuildEmitSolution的值设置为1

set MSBuildEmitSolution=1
msbuild my_stuff.sln /t:rebuild /p:Configuration=Release /p:Platform=x64

最近,我不得不这样做是由于在嵌套目录的目标非常具体的名称。 所以,从我生成的文件, my_stuff.sln.metaproj我发现这行:

<Target Name="Utils\Firewall\FirewallUtils:Rebuild">

这意味着命令行使用结束是,

msbuild my_stuff.sln /t:Utils\Firewall\FirewallUtils:Rebuild /p:Configuration=Release /p:Platform=x64


文章来源: specify project file of a solution using msbuild