gpt4 book ai didi

visual-studio-2008 - 为什么 VS2008 构建与同一解决方案的 msbuild 不同?

转载 作者:行者123 更新时间:2023-12-02 00:43:50 25 4
gpt4 key购买 nike

我继承了一个由多个项目组成的解决方案,混合了 VB.NET 和 C#。它使用 IDE 的“构建解决方案”按钮构建良好。它不使用“msbuild foo.sln”从命令行构建;错误消息表明项目 A(引用项目 B)找不到项目 B。实际上,在使用“msbuild”后检查“bin”文件夹的内容并将其与使用 IDE 后的内容进行比较时,我可以发现大量缺失的 DLL,包括 B.dll。

简而言之:项目A确实有对项目B的引用,但是B.DLL只是在使用IDE时被复制到A的bin目录,而在使用msbuild时则没有。如果我在 IDE 构建之后运行 msbuild 它会工作,因为引用的 DLL 已被复制。

我曾天真地认为“msbuild foo.sln”与 foo.sln 的 IDE 构建相同。事实似乎并非如此。 Stack Overflow 上至少还有其他三个类似的问题,但我无法引用它们,因为“新用户只能发布一个超链接”(!!)。对不起。以下是问题标题,您可以自行搜索:

现在这是我的问题:

  1. 我在哪里可以找到 Visual Studio 在“构建解决方案”时所做的准确记录?
  2. 配置 Visual Studio 和持续集成服务器(例如 Hudson)以使开发人员工作站构建与 CI 构建相同的最佳做法是什么?

我来自 unix 世界,请随时向我发送新手指南。

最佳答案

John Weldoon 是正确的,Visual Studio 和 MSBuild 的构建非常相似,但有时可能不同。一种情况是 VS 在引用方面更宽松。假设您有三个项目 A、B 和 C。A 依赖于 B,B 依赖于 C。然后在 VS 中,如果项目 A 仅引用 B 那么它没问题,但 MSBuild 可能会提示,因为它缺少对项目 C 的引用。存在一些差异的一个重要原因是因为 VS 有一个主机编译器,用于帮助增强 IDE 体验。如果您希望降低 IDE 体验,则可以将 MSBuild 属性 UseHostCompilerIfAvailable 设置为 false,以强制 Visual Studio 使用 MSBuild。比如

<PropertyGroup>
<UseHostCompilerIfAvailable>false</UseHostCompilerIfAvailable>
</PropertyGroup>

我不建议这样做,但如果您绝对需要它,您可以使用该选项。

关于visual-studio-2008 - 为什么 VS2008 构建与同一解决方案的 msbuild 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1558103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com