【发布时间】:2014-08-19 15:03:41
【问题描述】:
通过here,我了解了如何使用 MSBuild 创建 Web 部署包。命令行如下所示:
MSBuild "MyProjectName.csproj" /T:Package /P:Configuration=Staging;PackageLocation="D:\Vishal\Package.zip"
Configuration、PackageLocation 都是属性。
我只是想知道如何知道哪些属性适用?以及它们的正式定义?
我搜索了MSBuild Reserved and Well-Known Properties,但他们不在那里。 我搜索了MSBuild Task,仍然没有运气。
添加
似乎不同的项目类型有其特定的属性。例如,PackageLocation 属性应该特定于 Web 应用程序项目。我正在寻找的是这些属性的具体定义。
添加 2
我有一个如下的 MSBuild 任务。
> <MSBuild Targets="Clean; Package"
> Projects="$(XXXSolutionDirectory)\Web\Web.csproj"
> Properties="Configuration=$(Configuration); Platform=$(Platform);
> OutputPath=$(BinDirectory)\Web_Deployment_Package;
> PackageLocation=$(BinDirectory)\Web_Deployment_Package;
> PublishDir=$(BinDirectory); OutDir=$(BinDirectory);
> IntDir=$(IntDirectory); TfsBuild=$(TfsBuild);
> CscToolPath=$(CscToolPath); CscToolExe=$(CscToolExe);
> VbcToolPath=$(VbcToolPath); VbcToolExe=$(VbcToolExe);
> TargetProfile=$(XXXConfiguration)"></MSBuild>
PackageLocation 等属性放在 MSBuild 任务的 Properties 属性中。而不是在PropertyGroup 定义中。这是它出现在构建项目文件中的唯一位置。那么我在哪里可以找到它的定义来理解它的预期用途呢?
【问题讨论】:
-
如果您将
/v:diag开关传递给 MsBuild,它将为您提供极其详细的输出,包括目标属性 -
谢谢。但这是过于冗长的信息。我没有看到
PacakgeLocation属性的定义。 -
你grep了完整的输出吗?无论如何:输出确实包含诸如“使用
中的目标 Package”之类的内容。在文本编辑器中打开,查找目标并查看它使用的属性。事情是 MsBuild 本身无法知道所有可能的属性,这不是它的工作原理。假设任务使用属性 $(Prop),Prop 不必存在。所以 MsBuild 无法列出它。唯一的参考是它出现在文本中的事实。因此,您必须转向简单的文本搜索。 -
btw for Targets 这是不同的,MsBuild 知道这些:stackoverflow.com/questions/2618201/… 例如,您也可以调整该答案以列出可用的 PropertyGroups,但同样,这并不是说 Package 任务使用的属性会出现。
标签: msbuild msbuild-task msbuild-4.0