我正在尝试从一个包含对第三方DLL(Kendo.mvc.dll)的引用的VS 2017项目中创建NuGet包。无论我尝试什么,都不能让
我最初使用命令行从命令
然后我使用了
我已经尝试了以下操作,但都没有起作用:
那确实可行,但如果从
nuget pack
自动将该DLL包含在我的NuGet包的lib文件夹中。我最初使用命令行从命令
nuget spec [project's name and path].csproj
创建了.nuspec
文件。然后我调整了该文件的设置,结果得到了这个.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
创建包,结果如下:
根据文档(MS Docs - 创建 NuGet 包)所述,我期望nuget pack
会自动包含项目中引用的非NuGet来源的 DLL 在内,但这并没有发生?我已经尝试了以下操作,但都没有起作用:
- 在项目的根目录下添加一个
lib
文件夹,并将 DLL 放入其中(并尝试更改构建操作和复制到输出目录设置)。这会在 NuGet 包的 Content 文件夹下创建一个 lib 文件夹,而不是将 DLL 添加到与程序集的 DLL 相同的lib
文件夹中。我这样做是因为Microsoft文档中提到了约定的文件结构。 - 从C:\Program Files文件夹引用 DLL,并将 DLL 的 Copy Local 属性设置为 true
.nuspec
文件中明确添加文件,例如: <files>
<file src="bin\Debug\Kendo.Mvc.???" target="lib\net461" />
</files>
那确实可行,但如果从
csproj
文件生成 .nuspec
文件时需要它,那么这个应该自动添加进去吧?