问题标签 [msbuild-projectreference]

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 投票
2 回答
2526 浏览

msbuild - MSBuild 中的 ProjectReference 配置

是否可以在 MSBuild 中设置 ProjectReference 的配置?

场景:我有一个构建脚本(网络部署),它有许多配置,唯一的区别与它们的部署方式有关,而不是它自己的构建。我讨厌不得不为我的解决方案/项目维护配置,这些配置是作为部署过程的一部分构建的,只是因为我需要这些配置进行部署。我有什么办法可以做到这一点?

0 投票
3 回答
3720 浏览

msbuild - GAC 中的程序集未复制到项目中的输出,该项目引用了一个项目,该项目引用了具有 CopyLocal=true 的 GAC 程序集

我有一个使用 CopyLocal=TRue 引用 System.Web.Mvc 的“项目 A”。System.Web.Mvc 在我的本地机器和构建服务器上都在 GAC 中。

我还有一个“Project B”,它在“Project B”的输出中引用“Project A”,System.Web.Mvc 在构建期间不会复制到。

我怀疑这是因为它在 GAC 中。这是真的?我可以做些什么让 MSBuild 将其复制到输出文件夹吗?

我在这个线程中阅读了 Muse VsExtensions 的答案,它只讨论了对 GAC 的直接引用,但是我们通过“项目 A”进行了间接引用: .NET 参考“复制本地”真/假基于内容设置广汽

这篇博文也相关: http ://deeperdesign.wordpress.com/2010/02/08/msbuild-assembly-dependencies-and-the-gac/

0 投票
2 回答
137 浏览

c++ - VS 2010 构建问题:参考问题

我有多个项目的解决方案。

Bin/Lib/Include 的常用文件夹很少,例如 Lib 文件夹中的所有导出库,Bin 文件夹中的可执行文件和 Include 中的标头

例子

解决方案 - S 项目 A1 - DLL 项目 A2 - Exe ... 项目 An

项目 A2 依赖于项目 A1

我已经构建了完整的解决方案并删除了除 SDK(Bin\lib\Include) 文件夹之外的所有内容。因为它的大解决方案,所以我们利用这个导出的 SDK 并构建任何应用程序

现在我已经获取了完整的代码(A1,A2,... An)并只打开了项目 A2,

但是当我构建它给我以下错误无法打开输入文件'C:\Code\Development\Src\A2\Debug7\A1.lib'

为什么它不从 common lib 文件夹中获取库。

它在 VS 2008 中运行良好,但在升级到 2010 后它从未运行过。

0 投票
2 回答
783 浏览

delphi - 如何使用 DPROJ在德尔福代码中?

我想使用 GUID 来唯一标识我的应用程序并从代码中获取此值。我看到 DPROJ 中有一个非常理想的 GUID:

这是否会在任何地方进入 exe,例如作为资源?如果不是,那么将此 GUID 值链接到我的 exe 文件并在代码中读取它的最简洁方法是什么。上面的 GUID 位于一个专用的文本文件中,并使用我的DprojMaker 工具粘贴到 DPROJ 中,因此我可以将它包含在您可能建议的任何内容中。谢谢

0 投票
1 回答
2881 浏览

wix - WiX 属性 RefProjectOutputGroups RefTargetDir

在 WiX 项目 (*.wixproj) 中引用项目时,我经常看到代码片段

任何人都可以向我解释属性DoNotHarvest,RefProjectOutputGroupsRefTargetDir含义是什么吗?或者指向一些文档?我找不到任何解释这些属性含义的东西(包括 WiX 文档)。

0 投票
1 回答
27972 浏览

.net - MSBuild ProjectReference:private ("Copy Local") - 允许的值和行为是什么?

TL;DR是否有任何官方文档详细描述<private>/“复制本地”选项如何与 MSBuild 一起使用?应该包含哪些价值观?


当您将Visual Studio 中一个项目的项目引用添加到另一个项目时,它会将一个添加<ProjectReference Include=".....csproj">.csprojMSBuild 文件中。

当您将来自 Visual Studio 中的一个项目的文件引用添加到文件系统中的程序集文件时,它将添加<Reference Include="Foo"> <HintPath>....Foo.dll</HintPath> ....csprojMSBuild 文件中。

这两种情况下,对于 Visual Studio Setting ,都会添加Copy Local = True|False一个子元素<Private>True</Private>or 。<Private>False</Private>

Reference并且ProjectReference似乎记录在Common MSBuild Project Items下:

你会注意到,

  1. ProjectReference 根本不记录<private>项目
  2. Reference 没有列出 TrueFalse作为可能的值。

所以。嗯?是否有任何官方文档(我会对一个好的博客条目感到非常满意)详细描述了该<private>选项的工作原理?医生只是大错特错还是还有更多?


我的 VS 2013 Express 的示例片段在这里:

0 投票
1 回答
370 浏览

c# - 在构建过程中什么优先?nuget 参考或项目参考

我有一个 .net 解决方案,它有两个类库项目(比如 A 和 B),我也将它们发布到 nuget 服务器。

如果我要添加 A 作为项目引用以及 B 上的 nuget 引用,编译时我应该在 B 的 bin 文件夹中期望什么版本的 A.dll?

是否有一个规则可以确定哪些参考优先?如果两个 dll 有不同的版本会怎样?

PS - 我正在从 VS 构建

0 投票
1 回答
328 浏览

c# - 有条件地复制依赖项 MSBuild

我们设置了我们的解决方案,以便项目 A 引用项目 B,项目 B 引用项目 C,并且项目 C 具有引用本机 DLL 的 .NET 包装器。

A -> B -> C -> 通过 .NET Wrapper 的原生 DLL

卷积的原因是我们正在处理第 3 方硬件,或者我们会直接从项目 B 中引用 DLL。无论如何——

我们正在尝试获取项目 C 中引用的一些文件(本机 DLL),复制到项目 A。 使用“内容”的构建操作复制本地不起作用,因为 MSBuild 将失败,说它不能像一旦它们覆盖文件一样覆盖启动它们,进程不会自行清理并继续运行。

  1. 是否可以让 MSBuild 在构建之前尝试终止进程?

    或者

  2. 如果 MSBuild 不存在本机 DLL,是否可以有条件地将本机 DLL 从项目 B 复制到项目 A?项目 A 的 bin 文件夹是它们启动的地方,这是构建失败的地方(不是从项目 C 到 B)。

0 投票
0 回答
194 浏览

visual-studio - 除了使用 MSBuild 项目引用复制项目主要输出之外的文件?

我有一个被许多依赖项目引用的项目,并且该项目中的一些文件必须位于依赖项目的二进制目录中才能运行依赖项目。

目前,我定义了几个自定义 AfterBuild 目标:一个在引用的项目中将必要的文件复制到共享位置,然后在每个依赖项目中进行一个以将文件从共享位置复制到它们的 bin 目录。这行得通,但维护起来很烦人,而且感觉很脆弱和笨拙。

我想要实现的是让我的文件进入引用项目的主要项目输出(即与.dll和.pdb一起),这样文件在构建时通过自动复制到依赖项目的输出目录MSBuild 项目参考。

这可能吗?如果是这样,发现主要输出的机制是什么?我必须将文件添加到哪些项目组?MSBuild 是否“硬编码”以仅查找 .dll 和 .pdb?

作为参考,我认为自己高于 MSBuild 新手,但远低于 MSBuild 专家。我已经阅读了 Hashimi 的“Inside the Microsoft Build Engine”,基本理解了它,并且我已经能够为其他任务多次挖掘 MS 目标文件,并取得了一定的成功。不过,到目前为止,这个问题超出了我的范围。

另外,我已经查看了这个看起来相似的问题,但它没有解决项目参考;只生成带有项目的附加文件。

0 投票
1 回答
762 浏览

msbuild - MSBuild - 尝试构建项目引用时的竞争条件

我在尝试使用 MSBuild 构建时遇到了一个奇怪的问题。

我正在使用 MSBuild 构建解决方案文件,其中 /m(并行构建)和 BuildProjectReferences 设置为 true。假设我在 sln 文件中有 A.vcxproj 和 B.vcxproj,B 有一个对 A 的项目引用。发生的情况是 A 项目首先开始构建,而在编译过程中,B 项目开始在另一个进程中构建(因为并行构建),它会调用构建 A。现在这会导致竞争条件,因为我们有两个进程试图构建同一个项目 A,我会看到访问问题。

理想情况下,如果 A 尚未完成构建,或者如果它确实调用 B 然后检测到 A 仍在构建并等待它完成,则 MSBuild 不应调用构建 B。这一切都不会发生。此外,这仅在 MSBuild 中发生 - 如果我尝试从 VS2015 IDE 构建解决方案文件,则不会发生。

知道为什么 MSBuild 会这样吗?