问题标签 [msbuild-propertygroup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4528 浏览

msbuild - Msbuild 根据目标参数列表复制到多个位置?

我有一个要复制到多个位置的目录。

说我有

  • 主页.aspx

我想把它复制到

  • abc/home.aspx
  • def/home.aspx
  • ghi/home.aspx

所以我有两个问题:

  • 如何定义列表 abc、def、ghi?
  • 如何使用此列表的每个元素执行我的复制任务?
0 投票
3 回答
9239 浏览

msbuild - 将属性组值从一个 MsBuild 任务传递到另一个

如何使一个构建目标中定义的值在另一个目标中保持有效?如果 PropertyGroup 不是我应该在这里使用的写入 MsBuild 实体,那是什么?ReleaseDir 在“Package”目标中打印正常,但在“DoPackage”中为空

0 投票
2 回答
3531 浏览

c# - How to specify CodeAnalysisRules in MSBuild via commandline

I want to be able to specify the Code AnalysisRules in commandline MSBuild (for Code Analysis / FXCOP). The project file would have something like this in it:

<CodeAnalysisRules>-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302</CodeAnalysisRules>

So I would assume that I use something like this:

MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301

Which works fine, but when I want to add another rule, it does not like the semi colon:

MSBuild.exe /property:RunCodeAnalysis=true /property:CodeAnalysisRules=-Microsoft.Globalization#CA1301;-Microsoft.Globalization#CA1302

MSBUILD : error MSB1006: Property is not valid. Switch: -Microsoft.Globalization#CA1302

How can I specify more than one rule?

I am happy to reference a file, but I don't want to just change the project files.

Backgroud: I want to create a set of rules for a continuous integration server (Hudson in my case).

Note: I am running Visual Studio 2005

0 投票
3 回答
4415 浏览

msbuild - MSBuild:如何控制分号分隔属性的解析

当单个属性包含分号时,在项目组中使用时,MSBuild 会自动将该属性解析为属性列表。这是我项目的一个片段:

当任务使用 @(InstallShieldProperties) 项目组时,MSBuild 会将 ConnectionString 属性解析为子集属性列表,因为它包含分号。

我知道我可以更改项目组的分隔符,但这不会有任何区别。我试图避免在自定义任务中操作 string[] 数组。

0 投票
2 回答
1786 浏览

msbuild - MSBuild:星号和奇怪的 ItemGroup 排除行为

我有一个脚本,它试图ItemGroup从某个目录中的所有文件中构造一个,同时排除具有某些名称的文件(无论扩展名如何)。

要排除的文件列表最初包含文件扩展名,我正在使用“社区任务”RegexReplace将扩展名替换为星号。Exclude然后我在项目的属性中使用这个列表。由于某种原因,文件没有被正确排除,即使列表看起来是正确的。

为了尝试找出原因,我创建了一个测试脚本(如下),它有两个任务:第一个以两种不同的方式使用文件模式列表初始化两个属性。第二个任务打印属性和在属性中使用这两个属性产生的文件Exclude

属性的值似乎相同,但结果组不同。这怎么可能?

输出(为了清楚起见,重新格式化):

观察两者ExcludeFilesAExcludeFilesB看起来相同,但结果组RemainingFilesARemainingFilesB不同。

最终,我想RemainingFilesA使用与生成相同的方式ExcludeFilesB生成的模式来获取列表。你能建议一种方法,还是我必须完全重新考虑我的方法?

0 投票
2 回答
6357 浏览

msbuild - MSBuild:如何创建全局属性?

/p:MyProp=value运行 MSBuild 时,可以从主脚本调用(通过MSBuild任务)的每个 MSBuild 脚本访问在命令行中传入的任何内容。如何在任务中定义可以从每个脚本中类似访问的属性?

例如:

如果像这样运行:msbuild Script1.proj /p:GlobalProp1=VALUE1上面的脚本产生以下输出:

我希望Script2.proj以某种方式设置 GlobalProp2 以产生以下输出:

这可能吗?如果可以,怎么做?

我已经看到使用环境变量的建议,但似乎唯一有帮助的情况是在脚本中设置变量,并且使用 Exec 任务调用脚本(否则 env.variable 更改有没有效果)。

0 投票
1 回答
3517 浏览

msbuild - 如何在 MSBuild 中将自定义属性添加为 PropertyGroup 的子项?

我有以下构建脚本,我使用 MSBuild 运行:

当我现在在命令行上启动脚本时:

我在命令行输出中收到以下错误:

这基本上意味着:element<#text> 是 unknown child

有人有想法吗?

编辑:对不起,我现在完成了脚本

0 投票
1 回答
133 浏览

msbuild - 是否有可能在另一个属性值中使用一个属性值?

我想做这样的事情:

将一个属性值作为另一个传递。有没有办法做到这一点?如何?

0 投票
4 回答
1592 浏览

msbuild - 在 MSBuild 中找出当前操作系统的“位”

我有一个构建脚本需要硬编码可执行文件的路径。路径是:

  • C:\Program Files\Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe

这工作正常,但现在我在 64 位操作系统上运行(但我的同事和构建服务器仍然在 32 位上)。

我需要这样的路径:

  • C:\Program Files (x86) \Microsoft Visual Studio 9.0\SmartDevices\SDK\SDKTools\cabwiz.exe

但对其他人使用正常路径。

这是我的设置方式:

如果操作系统(不是当前的构建配置)是 64 位,我可以设置一个条件吗?

0 投票
3 回答
747 浏览

msbuild - MsBuild 中项目的评估范围和顺序

我想知道为什么在下面的代码中,MsBuild 拒绝设置后缀元数据。它确实适用于 CreateItem 任务而不是 ItemGroup 声明(因为 CreateItem 是在构建时计算的)但我不能在这里执行此操作,因为此代码位于“属性文件”中:该项目没有目标,它只是一堆我在实际项目中包含的属性/项目。

目的地构建良好,但未设置后缀元数据。

至于现在,我已经在我需要的每个项目中复制了目的地定义,但它不是很干净。如果有人有更好的解决方案,我很感兴趣!