7

我正在尝试学习如何使用 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>

它继续等等等等等等等等等等等等的项目,这就是你如何做到这一点,这就是你如何做到这一点。没用,完全没用。因为他们从来不说这个 xml 文件应该如何被 MSBuild 应用程序识别。它应该以特定方式命名吗?它应该放在特定目录中吗?两个都?两者都不?

他们不告诉它的不仅仅是MS教程。我无法在 MSDN 上找到它,也无法在任何我可以从 Groups.Google 中提取的链接上找到它。

这里有人知道吗?我当然希望如此。

编辑添加: 我将教程中包含的 .proj 文件误认为是 .csproj 文件,这就是提供给 MSBuild 的文件,但在我看到这个之前,它得到了下面的答案。这应该很明显,但我错过了。

4

5 回答 5

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
于 2008-09-22T22:58:23.720 回答
2

如果您遵循以下策略,则不必指定构建文件:

今天,当您从命令行调用 msbuild.exe 并且不指定任何项目文件作为参数时,我们会进行一些自动推断和扫描并决定是否应该构建任何东西。如果我们找到 msbuild 项目(任何具有 *proj 扩展名的项目)或解决方案文件 (.sln),只要目录中只有一个解决方案或一个项目,我们将构建项目或解决方案。如果有解决方案和项目,我们会优先考虑解决方案。如果有多个项目或多个解决方案,我们会发出错误消息,因为我们无法决定要构建哪一个。

这取自新功能反馈请求:/IgnoreProjectExtensions - A new command-line switch

我总是将我手动编写的脚本命名为build.proj

于 2008-10-30T10:33:18.407 回答
2

不是直接的答案,而是相关的;如果您将.msproj其用作扩展程序,Visual Studio 将为您提供智能感知。

于 2011-08-12T12:18:55.733 回答
0

或者对于像我这样的真正懒惰的人。

msbuild.exe project-file-name.vcproj /t:Rebuild /p:Configuration=Release
于 2008-10-24T14:39:12.463 回答
0

Visual Studio 2012 将其识别.msbuildproj为扩展并将其视为解决方案资源管理器中的“项目”。

于 2013-03-08T21:33:53.587 回答