我知道这是一个以前讨论过的问题,但我有一个我不明白的情况。
我有以下项目
项目A有一个对项目B的可视化工作室引用。我在项目B中使用代码中的两个包,我正在调试模式下构建。项目B配置如下所示。
<Reference Include="log4net">
<HintPath>..\packages\log4net.2.0.0\lib\net40-full\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationServer.Caching.Client">
<HintPath>..\packages\ServerAppFabric.Client.1.1.2106\lib\Microsoft.ApplicationServer.Caching.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ApplicationServer.Caching.Core">
<HintPath>..\packages\ServerAppFabric.Client.1.1.2106\lib\Microsoft.ApplicationServer.Caching.Core.dll</HintPath>
</Reference>*为什么只有来自log4net的dll文件被复制到项目A的bin文件夹中,而不是客户端和核心文件?任何帮助或解释都将不胜感激!*
发布于 2022-07-05 13:46:52
为了准确回答你的问题,我们需要知道几件事。
一种解释取决于您在项目A中有哪些引用--例如,除了引用项目B之外,项目A还包括其他引用,其中包括Microsoft.ApplicationServer.Caching.Client和Microsoft.ApplicationServer.Caching.Core,可能将选项Copy local设置为false,但不包括log4net。在这种情况下,前两者的副本只会发生在项目B上。
另一种可能的解释取决于您的代码如何处理项目A和项目B中的引用。MSBuild过程不会自动复制项目中没有实际使用的引用的程序集。
最后,如果您依赖于构建事件来复制引用,请查看输出面板,以确保尽管编译成功,但没有出现错误。
无论如何,为了确保所有包都是复制的,我发现编辑.csproj文件很有用,并且在<PropertyGroup>标记中添加以下内容:
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>来自文档
如果将此
CopyLocalLockFileAssemblies设置为true,则将任何NuGet包依赖项复制到输出目录。这意味着您可以使用dotnet的输出在任何机器上运行您的插件。
https://stackoverflow.com/questions/17281012
复制相似问题