【问题标题】:Dependent DLL in NuGet not copied to output directory of clientNuGet 中的相关 DLL 未复制到客户端的输出目录
【发布时间】:2018-10-13 07:31:33
【问题描述】:

我有一个打包到 NuGet 包的 C# 项目。 该项目依赖于外部非托管 dll,如果我在本地构建解决方案,它会被复制到输出中。 我已经设法将 dll 打包到 NuGet 包中,并将其放入客户端的项目中,但“复制到输出目录”始终设置为“不复制”。

我没有使用 .nuspec 文件,因为我切换到了新的 .csproj 格式。

这是我的 .csproj 到目前为止的样子:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
    <PackageId>External.Dll.Wrapper</PackageId>
    <Authors>Me</Authors>
    <Version>1.0.0</Version>
    <Company>None</Company>
    <Owners>Me</Owners>
    <Copyright>Copyright © 2018</Copyright>
    <Description>Wrapper for using external dll</Description>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
    <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <None Include="external.dll">
      <Pack>true</Pack>
      <CopyToOutput>true</CopyToOutput>
      <PackageCopyToOutput>true</PackageCopyToOutput>
      <PackageFlatten>false</PackageFlatten>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

也许有人可以告诉我我做错了什么。 我已经花了一整天的时间试图弄清楚这一点,但没有运气。 非常感谢!

【问题讨论】:

    标签: c# nuget csproj


    【解决方案1】:

    如果您不直接引用 dll 中的任何内容,则不会被复制。如果您在某处放置了一个虚拟声明(甚至不必使用它),那么它应该复制过来。

    externaldll.someclass mythingamajig
    

    如果这不起作用,请检查依赖项的相对路径。右键单击Dependencies-&gt;Add reference-&gt;Browse-&gt;,然后选择dll 文件并添加它。您可能必须手动添加 dll 才能在此处显示。

    【讨论】:

    • 哦,检查输出路径。如果您没有更改它应该是默认值,但最好检查以确保。
    • 感谢您的快速回复,但我无法引用它,因为它是一个非托管的 dll。
    猜你喜欢
    • 2017-09-01
    • 2015-01-02
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 2023-03-03
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多