gpt4 book ai didi

dependency-injection - IoC : ProjectReference with ReferenceOutputAssembly = false, 但仍然想要 nuget 包

转载 作者:行者123 更新时间:2023-12-04 13:42:54 26 4
gpt4 key购买 nike

背景

我希望将 dll 从我的数据访问层复制到我的应用程序层,以便 AutoFac 加载 dll,但不希望有项目引用,因此开发人员不会意外引用和使用数据访问层直接上课。

问题

我的应用程序层 csproj 文件中有类似的内容。

这一直很有效,但我现在意识到它没有复制 transient 依赖项,即 nuget 包

<ProjectReference Include="..\MyProj.csproj">
<!-- We don't wish a developer to accidentally reference the DAL tier directly in the UI, only as a dependency. -->
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
<!-- As the composite root (in DI terms) we still want to ensure that the UI tier has a copy of the DAL dll to load up.-->
<OutputItemType>Content</OutputItemType>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<!-- DebugSymbolsProjectOutputGroup copies PDB files, but not for Visual Studio, which is still fine as Visual Studio knows how to get debugging information. -->
<Targets>Build;DebugSymbolsProjectOutputGroup</Targets>
</ProjectReference>

随着:
  <PropertyGroup>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

阅读大量 github 门票和博客,例如:

https://www.erikheemskerk.nl/transitive-nuget-dependencies-net-core-got-your-back/

https://github.com/NuGet/Home/issues/6151

https://github.com/dotnet/sdk/issues/747

玩我能想到的所有组合,似乎都没有复制 nuget 包。

唯一有效的方法是:
<ReferenceOutputAssembly>true</ReferenceOutputAssembly>

哪种方式违背了使数据访问层 dll 远离应用程序层的目标。

最佳答案

只需制作您自己的自定义复制目标即可复制您想要的内容。没有错。然后您应该能够删除上面显示的 ProjectReference。

关于dependency-injection - IoC : ProjectReference with ReferenceOutputAssembly = false, 但仍然想要 nuget 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54222632/

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