问题标签 [buildmanager]

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 回答
313 浏览

multithreading - MSBuild 不支持多线程解决方案构建

我有一种情况是在多线程中使用 MSBUILD 构建多个解决方案,但是在构建过程中,总是很少有解决方案失败。我已经尝试一个一个地构建每个解决方案,它工作得很好。但我尝试使用多线程构建 5 个解决方案,很少构建失败。当我调查成功构建和失败构建的构建日志文件时,似乎 MSBUILD 与每个构建过程发生冲突。作为参考,我附上了两个构建日志的文本文件。

[为提交 ID 11468 构建开始] https://i.stack.imgur.com/KbaJb.png

[为提交 ID 11468 构建开始] https://i.stack.imgur.com/K1BOU.png

0 投票
1 回答
464 浏览

c# - 使用 BuildManager 的 MSBuild 找不到引导程序路径或 SignTool.exe

我正在尝试使用 MSBuild API - “BuildManager”自动化构建。

以下代码适用于构建解决方案/项目,但在发布时失败。使用 Visual Studio 发布页面时,项目发布得很好。

如果我运行此代码,它将失败并出现以下错误:

签名时出错:找不到 SignTool.exe。

如您所见,我正在添加名为“GenerateBootstrapperSdkPath”的全局属性,如果它不存在会导致此错误:

在“C:\PathToProject\Engine”中找不到所需的文件“setup.bin”。

这似乎是一个恶性循环,一旦我为引导程序指定了路径,它就找不到 SignTool.exe,如果我没有它就找不到 setup.bin。

不幸的是,全局属性“SignToolPath”似乎没有做任何事情。

有任何想法吗?

0 投票
2 回答
474 浏览

c# - 使用 BuildManager 构建项目会导致 nuget 包 DLL 被锁定

我正在执行以下代码:

但是,当构建任务完成时,当我尝试删除文件夹时 - 我被阻止这样做,因为我的应用程序已将 DLL 从解决方案包文件夹加载到内存中。

特别是 Microsoft.Bcl.Build.Tasks.dll

因为这个文件最终在我的应用程序中“使用中”,所以在应用程序关闭之前,我的应用程序无法删除临时目录。
鸡和蛋 - 在文件夹消失之前我不想关闭应用程序,并且在应用程序关闭之前我无法删除文件夹。

有人有任何已知有效的解决方案吗?
例如:
我知道一旦在应用程序中加载了一个 DLL,它就是永久的,并且不能按传统方式释放。
但是-我过去听说您可以在应用程序中创建其他 AppDomain,然后将程序集加载到 AppDomain 而不是主应用程序中,然后您可以处理 AppDomain 和相关的引用/程序集,我希望......处理?

注意 - 我知道我在上面调用 Nuget 包恢复,但是单步执行代码,我可以明确地说锁定发生在构建步骤,而不是 nuget 恢复。

0 投票
0 回答
81 浏览

c# - BuildManager 引发 _CheckForInvalidConfigurationAndPlatform 异常,但项目在 Visual Studio 中构建良好

我有一个当前在 Visual Studio 中成功编译的解决方案。

我正在尝试通过我的构建脚本来构建解决方案,这是一个 C# 控制台应用程序,它调用 BuildManager.DefaultBuildManager.Build() 来构建解决方案。

但是,我得到一个例外:

以下是运行构建代码的相关代码:

我相信这里引用的projectPath是正确的(我之前记录了它)。

其他相关信息是,这个脚本曾经与旧版本的 Microsoft.Build(我认为是 14.0)一起工作,但现在我更新了,它坏了。