我正在尝试学习如何使用MSBuild,以便我们可以使用它来构建我们的项目。文档中似乎有一个非常大的漏洞,我发现每个地方都有漏洞,漏洞是你如何命名或以其他方式指定MSBuild项目文件?
例如,可以从Microsoft下载的MSBuild教程详细介绍了构建文件的内容。例如,这里有一些他们的Hello World项目文件。
<Project MSBuildVersion = "1.0" DefaultTargets = "Compile">
<Property appname = "HelloWorldCS"/>
<Item Type = "CSFile" Include = "consolehwcs1.cs"/>
<Target Name = "Compile">
<Task Name = "CSC" Sources = "@(CSFile)">
<OutputItem TaskParameter = "OutputAssembly" Type = "EXEFile" Include = "$(appname).exe"/>
</Task>
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
它继续等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等等。没用,完全没用。因为他们从来没有说过如何通过MSBuild应用程序识别这个xml文件。它应该以特定的方式命名吗?它应该放在特定的目录中吗?都?都不是?
不只是MS教程,他们没有告诉它。我无法在MSDN或任何我可以从Groups.Google中删除的链接上找到它。
这里有人知道吗?我当然希望如此。
编辑添加:我误解了 .proj文件包含在教程中 成为.csproj文件,就是这样 一个人送到了MSBuild,但是在我看到这个之前就得到了答案。 它应该是相当明显的,但我错过了它。
答案 0 :(得分:5)
您可以根据需要命名文件。从MSBuild的帮助
msbuild.exe /?
Microsoft (R) Build Engine Version 2.0.50727.3053
[Microsoft .NET Framework, Version 2.0.50727.3053]
Copyright (C) Microsoft Corporation 2005. All rights reserved.
Syntax: MSBuild.exe [options] [project file]
因此,如果您将文件另存为mybuildfile.xml,则可以使用以下语法:
msbuild.exe mybuildfile.xml
答案 1 :(得分:2)
如果您遵循以下策略,则不必指定构建文件:
今天,当你调用msbuild.exe时 从命令行而不是 将任何项目文件指定为 参数,然后我们做一些自动 推断并扫描并决定我们是否 应该建立什么。如果我们找到 要么是msbuild项目(任何东西 扩展名为* proj)或a 解决方案文件(.sln),我们将构建 无论是项目还是解决方案 只要有一个解决方案或 目录中的一个项目。如果有 我们将是一个解决方案和一个项目 优先考虑解决方案。如果 有不止一个项目或更多 比一个解决方案,我们发出错误 消息,因为我们无法决定哪个 一个要建立。
这取自New Feature Feedback Request: /IgnoreProjectExtensions - A new command-line switch。
我总是将我手动编写的脚本命名为 build.proj 。
答案 2 :(得分:2)
不是直接的答案,而是相关的;如果您使用.msproj
作为扩展名,Visual Studio会为您提供智能感知。
答案 3 :(得分:0)
或者像我一样真正的懒惰。
msbuild.exe project-file-name.vcproj /t:Rebuild /p:Configuration=Release
答案 4 :(得分:0)
Visual Studio 2012将.msbuildproj
识别为扩展名,并将其视为解决方案资源管理器中的“项目”。