gpt4 book ai didi

visual-studio - 在从 VS csproj 生成的 NuGet 包中包含第 3 方 DLL

转载 作者:行者123 更新时间:2023-12-04 07:32:51 25 4
gpt4 key购买 nike

我正在尝试从包含对 3rd 方 DLL (Kendo.mvc.dll) 的引用的 VS 2017 项目创建 NuGet 包。无论我怎么尝试,我都无法得到 nuget pack自动将该 DLL 包含在我的 NuGet 包的 lib 文件夹中。

我最初创建了 .nuspec使用命令 nuget spec [project's name and path].csproj 从命令行输入文件.然后我调整了该文件的设置,从而生成了这个 .nuspec 文件:

<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>our names</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>the description</description>
<releaseNotes>First release</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>entity-framework-6 mvc5</tags>
</metadata>
</package>

然后我用了 nuget pack创建包,结果如下:

Package contents showing no 3rd party DLL was included

从我在文档中读到的内容( MS Docs - Creating NuGet packages )我期待 nuget pack自动将项目中引用的任何非 nuget 源 DLL 包含在包中,但这并没有发生?

我已经尝试了以下方法,看看它是否有任何区别,但都无济于事:
  • 添加 lib文件夹到我的项目的根目录并将 DLL 放在那里(并尝试更改构建操作和复制到输出目录设置)。这在 NuGet 包的 Content 文件夹下创建了一个 lib 文件夹,而不是将 DLL 添加到同一个 lib包含程序集 DLL 的文件夹。我这样做是因为 the MS docs谈论基于约定的文件结构。
  • 从 C:\Program Files 中的文件夹引用 DLL 并在属性
  • 中将 DLL 的复制本地属性设置为 true

    This question谈到为 3rd 方 DLL 添加一个单独的元素,我猜是指在 .nuspec 中明确添加文件。生成包之前的文件,例如
      <files>
    <file src="bin\Debug\Kendo.Mvc.???" target="lib\net461" />
    </files>

    这确实有效,但如果在生成 .nuspec 时需要,不应该自动添加它来自 csproj 的文件文件?

    最佳答案

    如果您想通过 Visual Studio 或 dotnet 执行此操作,则可以编辑您的 csproj 文件,添加一个 ItemGroup 以包含 dll,如下所示:这会将其他 dll 与您当前项目的 dll 一起打包到 nuget 包中。

    <ItemGroup>
    <Content Include="<path to other dll>">
    <Pack>true</Pack>
    <PackagePath>lib\$(TargetFramework)</PackagePath>
    </Content>
    </ItemGroup>

    关于visual-studio - 在从 VS csproj 生成的 NuGet 包中包含第 3 方 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52484115/

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