问题标签 [msbuild-task]

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 投票
1 回答
1395 浏览

visual-studio-2008 - 尝试使用 AssemblyInfo 任务设置构建版本时出错

我已将 AssemblyInfo 任务引用添加到我的 C# 项目文件(VS2008 .NET 3.5),但是在构建时出现以下错误

“AssemblyInfo”任务意外失败。System.ArgumentException:版本参数名称:在 Microsoft.Build.BuildEngine 的 Microsoft.Build.Extras.AssemblyInfo.Execute() 中的 Microsoft.Build.Extras.Version.ParseVersion(String version) 中指定的字符串不是有效的版本号。 TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)

我的 assemblyinfo 文件具有以下两个属性:

0 投票
1 回答
2204 浏览

msbuild - GenerateBootstrapper 无法创建正常工作的 setup.exe

我看到一些我无法解释的奇怪行为。

我正在使用 wix 生成 msi 并使用 msbuild GenerateBootstrapper 任务来处理先决条件。这一切似乎都正确构建,即没有错误或警告,但生成的 setup.exe 不会运行。它提供了一个很好的空白错误对话框,事件日志提供了相同的信息。

更重要的是,如果我进入命令行并在项目上手动运行 msbuild 并指定引导程序目标,它会生成一个正确且有效的 setup.exe。

我已经使用这篇wix 文章作为入门的基础。我还在 StackOverflow 上使用了一些问题来尝试解决问题。

以前有没有人见过这种行为,最好还是修复一下?

下面是调用 GenerateBootstrapper 任务的项目文件的一部分:

这是我用来让它生成一个有效的 setup.exe 的命令:

0 投票
2 回答
2451 浏览

msbuild - 使用 MSBuild,如何通过迭代 ItemGroup 中的文件来构造动态字符串?

我需要创建多个 /testcontainer: 参数来输入执行的 MsTest 的任务。

我有以下内容:

对于TestFiles中的每个匹配项,我想构建一个字符串,如下所示:

我正在尝试使用 MSBuild 的内部而不必创建自定义任务,这可能吗?

TIA

0 投票
2 回答
3185 浏览

msbuild - 编写自定义任务时如何访问 MSBuild 的属性列表?

我需要编写一个自定义任务来打印所有定义的属性(非保留属性)。所以在我的 C# 代码中,我想访问 MSBuild 引擎的属性列表,但我不知道如何。请帮忙。

0 投票
1 回答
388 浏览

silverlight - Microsoft.Silverlight.Build.Tasks.CompileXaml.LoadAssemblies 的 NullReferenceException(ITaskItem[] ReferenceAssemblies)

我将我的 Visual Studio 2010 更新到版本 10.0.30319.1 RTM Rel 并在构建过程中开始出现以下异常:

System.NullReferenceException:对象引用未设置为对象的实例。在 Microsoft.Silverlight.Build.Tasks.CompileXaml.LoadAssemblies(ITaskItem[] ReferenceAssemblies) 在 Microsoft.Silverlight.Build.Tasks.CompileXaml.get_GetXamlSchemaContext() 在 Microsoft.Silverlight.Build.Tasks.CompileXaml.GenerateCode(ITaskItem item, Boolean isApplication ) 在 Microsoft.Silverlight.Build.Tasks.CompileXaml.Execute() 在 Bohr.Silverlight.BuildTasks.BohrCompileXaml.Execute()

BohrCompileXaml.Execute 的代码如下:

以及任务的定义:

可能是什么原因?以及如何获得更多信息 CompileXaml 类中发生了什么?

0 投票
4 回答
16920 浏览

msbuild - 在 MSBuild 任务中覆盖 MSBuildExtensionsPath 是不稳定的

这已经在 MS Connect 上交叉发布:

https://connect.microsoft.com/VisualStudio/feedback/details/560451

在通过 msbuild 构建包含 C# Web 应用程序项目的解决方案时,我试图覆盖属性 $(MSBuildExtensionsPath)。我这样做是因为 Web 应用程序 csproj 文件导入文件“$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets”。此文件由 Visual Studio 安装到标准 $(MSBuildExtensionsPath) 位置 (C:\Program Files\MSBuild)。我想消除对安装在机器上的这个文件的依赖(我想让我的构建服务器尽可能“干净”)。为了做到这一点,我想将 Microsoft.WebApplication.targets 包含在我的项目的源代码控制中,然后覆盖 $(MSBuildExtensionsPath),以便 csproj 导入这个包含的 Microsoft.WebApplication.targets 版本。

当我从命令行构建解决方案文件时,此方案工作正常,通过 /p 标志在命令行向 msbuild 提供 $(MSBuildExtensionsPath) 的自定义值。但是,如果我尝试使用自定义 msbuild 项目文件中的 MSBuild 任务构建解决方案(使用“Properties”属性覆盖 MSBuildExtensionsPath),则会失败,因为 Web 应用程序 csproj 文件正在尝试从“标准”Microsoft.WebApplication.targets 位置(C:\Program Files\MSBuild)。值得注意的是,如果我使用自定义项目文件中的“Exec”任务运行 msbuild,它就可以工作。更值得注意的是,在我使用“EXEC”任务(或直接从命令行)运行构建之后,我第一次使用“MSBuild”任务运行构建,构建工作正常。

有没有人见过这样的行为?我疯了吗?是否有人知道此问题的根本原因、可能的解决方法,或者这是否是 MSBuild 中的合法错误?

重现步骤:

1) 在 MSVS 2008 (Fake.sln) 中创建一个新的空解决方案

2) 将新的 C# Web 应用程序添加到解决方案 (WebApplication1.csproj)

3) 关闭 MSVS

4) 将“C:\Program Files\MSBuild\”的内容复制到包含您的解决方案的目录中名为“MSBuildExtensions”的目录中。

5) 重命名目录“C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications”,这样 WebApplication1.csproj 将无法从该位置导入 Microsoft.WebApplication.targets。

6) 在与解决方案相同的目录中创建一个名为“TestBuild.proj”的自定义 MSBuild 项目文件。它应具有以下内容:

7) 在 MSVS 命令提示符下执行“msbuild TestBuild.proj”(注意:第一次构建可能会成功,但如果多次运行则会失败)

0 投票
2 回答
722 浏览

visual-studio-2010 - 如何在 VS2010 Web 部署构建模板中执行 MSBuild 任务?

我们最近从 VS2008 -> VS2010 升级(因此从 Web 部署项目升级到正确的部署项目)。

显然,VS2010 Web 部署中的新功能是引入了 Workflow 作为构建过程模板。

之前,我们使用 WDP 中的 MSBuild 任务来执行 Yahoo YUI Javascript/CSS 压缩模块来缩小/压缩 javascript 和 css 文件。

有没有人设法使用 Visual Studio 2010 完成这项任务?

我见过 Justin Etheridge 创建的新“SquishIt”压缩器,但它并不理想,因为它会在运行中“挤压”(例如在 Application_Start - Global.ascx 上) - 这意味着您仍然需要将所有未压缩的文件推送到您的压缩之前的网络服务器。

在工作流设计器中-我可以看到一个名为“MSBuild”的工具箱项-只是不知道如何使用它来完成我想要的。

一直在寻找,似乎没有人知道如何。

编辑

将近 2 周后,仍然没有解决方案/答案。肯定有人遇到过这个问题吗?目前,我们只是通过 VS 命令提示符在构建后手动执行 MSBuild 任务。

编辑

依然没有!!

0 投票
3 回答
16455 浏览

visual-studio-2010 - MSBuild 2010 - 如何将 Web 应用程序发布到特定位置 (nant)?

我正在尝试让 MSBuild 2010 将 Web 应用程序发布到特定位置。我可以让它将部署包发布到特定路径,但是部署包然后添加自己的更改路径。

例如:如果我告诉它发布到,C:\dev\build\Output\Debug那么实际的 web 文件最终会在C:\dev\build\Output\Debug\Archive\Content\C_C\code\app\Source\ControllersViews\obj\Debug\Package\PackageTmp 并且C_C路径的一部分发生变化(不确定它如何选择路径的这一部分)。

这意味着我不能只从发布位置编写副本。

我现在正在使用这个 nant/msbuild 命令:

关于如何让它将网络文件直接发送到特定位置的任何想法?

0 投票
2 回答
1561 浏览

msbuild - 输出 MSBuild 变量的问题

我正在尝试将变量从一个目标输出到启动它的父目标中。例如,

目标 1 只是调用文件 2 中的任务,并且应该能够使用其中设置的变量。但是,我似乎无法让它工作(也许语法错误?)。目标 1 如下所示:

目标 2 是它读取文本文件的值并将其设置为属性并将变量“OutputVar”设置为匹配的位置。这应该返回给父母。

我对 MSBuild 任务很陌生,所以它很可能是显而易见的。我要做的就是在一个任务中设置一个变量,然后在调用它的父任务中使用该变量。

0 投票
2 回答
3440 浏览

msbuild - MSBuild 构建序列

查看 MS 的这篇文章,我对 SolutionToBuild 部分有疑问。

它说构建的顺序由上面的顺序决定。因此,例如,MySolution 将在 scribble 之前构建。

但是,如果 scribble依赖于 MySolution,这是否安全?例如,MySolution 输出一个或多个供 scribble 使用的 dll。如果同时更改 MySolution 和 scribble,构建是否会等待 MySolution 完全编译后才能移动到下一个项目?