首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VS csproj生成的NuGet包中包括第三方DLL

在VS csproj生成的NuGet包中包括第三方DLL
EN

Stack Overflow用户
提问于 2018-09-24 16:59:24
回答 2查看 9.2K关注 0票数 5

我正在尝试从VS 2017项目创建一个NuGet包,其中包含对第三方DLL (Kendo.mvc.dll)的引用。无论我尝试什么,我都无法让nuget pack自动地将DLL包含在我的NuGet包的lib文件夹中。

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

代码语言:javascript
复制
<?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创建了这个包,结果如下:

根据我在文档(MS创建NuGet包)中所读到的内容,我希望nuget pack会自动在包中包含项目中引用的任何非nuget源DLL,但这并没有发生吗?

我试过以下几点,看看它是否有任何区别,但都没有用:

  • 将一个lib文件夹添加到我的项目的根目录中,并将DLL放入其中(并尝试更改Build并将其复制到Output设置)。它在NuGet包中的Content文件夹下创建了一个lib文件夹,而不是将DLL添加到包含程序集DLL的同一个lib文件夹中。我这么做是因为医学博士谈论的是基于约定的文件结构。
  • 从C:\Program中的文件夹引用DLL,并在属性中将DLL的Copy属性设置为true

这个问题讨论了为第三方DLL添加一个单独的元素,我猜它指的是在生成包之前显式地在.nuspec文件中添加文件。

代码语言:javascript
复制
  <files>
    <file src="bin\Debug\Kendo.Mvc.???" target="lib\net461" />
  </files>

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-25 09:07:20

但是,如果需要从csproj文件生成.nuspec文件,不应该自动添加它吗?

是的,非nuget来源的DLL在默认情况下不会在从.nuspec文件生成.csproj文件时自动添加。

当我们从一个.nuspec文件生成.csproj文件时,.nuspec只包含基本信息,例如标题、描述等。您可以从程序集信息、属性->应用程序->组装信息中获取此信息:

,但默认情况下它不包括第三方DLL。

因此,为了包含第三方DLL,我们需要在.nuspec文件中显式地添加文件,就像您所做的一样。

有关更多细节,请查看从dll创建nuget包

顺便说一句,如果第三方DLL是项目中引用的nuget源DLL,您可以使用参数-IncludeReferencedProjects在从csproj文件生成.nuspec文件时自动添加它。

文件:pack命令(NuGet CLI)

希望这能有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2020-10-05 13:37:41

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

代码语言:javascript
复制
<ItemGroup>
    <Content Include="<path to other dll>">
        <Pack>true</Pack>
        <PackagePath>lib\$(TargetFramework)</PackagePath>
    </Content>
</ItemGroup>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52484115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档