gpt4 book ai didi

C# 孙项目 DLL 未包含在 msbuild 包中

转载 作者:可可西里 更新时间:2023-11-01 03:11:17 24 4
gpt4 key购买 nike

我有一个 C# 项目 X,它引用一个 C# 项目 Y,该项目 Y 引用一个 C# 项目 Z。所以依​​赖链看起来像这样:X => Y => Z。没有直接/显式依赖 X => Z。当我使用 msbuild 命令构建要发布的包时

msbuild DesignService.csproj /m /p:Configuration="Debug" /p:Platform="AnyCPU" /verbosity:quiet /t:Package /p:PackageLocation=X.zip /p:PackageAsSingleFile=True

我得到一个 zip 文件,其中包含 X 和 Y 的 DLL,但没有 Z。然后当包发布(到 Azure 应用服务)时,调用 Z 中的代码时出现运行时错误,说 DLL无法找到。如果我将 Z 添加为 X 中的直接/显式引用,它就可以正常工作。但我认为我不必这样做。

如何在不在 X 中添加显式引用的情况下从 msbuild 的发布包中获取 Z 的 DLL?

最佳答案

为什么会这样

X.csproj 被调用,因为它有一个对 Y.csproj 的项目引用,所以它调用 Y.csproj——它“绕到后面”。 Z.csproj 不一定已构建,因此构建中断。

如何修复

遵循这个原则:根本不要使用解决方案文件中表达的依赖关系。

您可以改为在项目中放置项目引用。 它看起来像这样——注意元数据元素,所有这些都在 <ItemGroup> 中。当然是标签:

<ProjectReference Include=”… foo.csproj”> 
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
</ProjectReference>

虽然必须以这种方式编辑您的项目以消除错误很烦人,但最好的做法是改用项目引用并将解决方案文件视为一个“ View ”。

如果您愿意,您最终会得到可以在没有解决方案文件的情况下构建的项目。

有关如何解决问题的更多详细信息,您可以引用此blog .

关于C# 孙项目 DLL 未包含在 msbuild 包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49543162/

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