从类库引用的DLL没有复制到输出目录

时间:2019-09-06 11:09:30

标签: .net-core

我有两个.NET标准库,分别编译为Foo.dllBar.dllBar包含对Foo的引用。在我的解决方案中,我有一个.NET Standard类库MyClassLibrary.csproj,其中包含引用两个DLL的代码。像这样从MyClassLibrary.csproj引用它们:

<ItemGroup>
  <Reference Include="Foo">
    <HintPath>..\..\lib\Foo.dll</HintPath>
  </Reference>
  <Reference Include="Bar">
    <HintPath>..\..\lib\Bar.dll</HintPath>
  </Reference>
</ItemGroup>
依次从MyClassLibrary.csproj引用

MyApp.csproj

当我构建MyApp时,两个 DLL都被复制到MyClassLibrary/bin/Debug/netstandard2.0。但是,仅 Bar.dll复制到MyApp/bin/Debug/netcoreapp2.1,结果在运行时出现错误(无法加载文件或程序集'Foo ...' )。另一方面,如果我删除了MyClassLibrary中调用Bar的一行代码,则MyApp最终引用了Foo.dll,但 Bar.dll

如何强制将两个DLL复制到应用程序输出目录?我尝试设置<Private>true</Private>(在Visual Studio中为“复制本地”),并在两个文件上都设置CopyToOutputDirectory无效。

1 个答案:

答案 0 :(得分:1)

如果直接在文件系统上引用它们,则不会自动引入类库使用的库。有两个选项:

1)MyApp中的参考Foo和Bar

2)为MyClassLibrary创建一个Nuget包,您可以在其中包含或指定依赖项。 https://docs.microsoft.com/en-us/nuget/concepts/dependency-resolution

修改。因为您在“属性”->“包”下使用.NET Standard,所以可以生成一个Nuget包。 如果您不想将其上传到某种形式的提要,则可以使用Nuget的本地提要。 https://docs.microsoft.com/en-us/nuget/hosting-packages/local-feeds