网上有大量关于创建 nuget 包的材料,但是,似乎也有大量的选项(dotnet pack、nuget.exe pack、msbuild t:pack 等)。我尝试了官方文档中的一些建议,但我所能管理的就是将 *.dll 复制到使用项目的二进制输出文件夹中。我很挣扎,因为我在网上找到的大多数文档都没有提到文档是否谈论当前的 nuget 包输出文件夹或消费者。这种区别对我来说意义重大。
这就是我想要的
<PackageReference>
这是我尝试过但失败的方法:
nuget.exe pack my.nuspec
copyToOutput
来自contentFiles
参见这里这是我的具体内容
myPackage.nuspec
<?xml version="1.0"?>
<package >
<metadata>
<id>myPackage</id>
<version>1.0.0</version>
<authors>me</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>bla bla</description>
<dependencies>
<group targetFramework=".NETFramework4.8.0" />
</dependencies>
<contentFiles>
<files include="**/*.tlb" buildAction="None" copyToOutput="true" flatten="true" />
<files include="any/any/*.txt" buildAction="Compile" copyToOutput="true" flatten="true"/>
<files include="any/any/*.xml" buildAction="EmbeddedResource" copyToOutput="true" flatten="true"/>
</contentFiles>
</metadata>
</package>
我的文件结构是
lib\net48\my.dll
--> 被复制以构建消费者的输出
content\any\any\my.tlb
content\any\any\my.xml
content\any\any\my.txt
--> 这些都不会被复制来构建消费者的输出。
我注意到我的所有文件都包含在 .nupkg 中,并且无论我将
<users>\packages\myPackage\1.0.0\content\any\any
设置为 copyToOutput
还是 true
,它们都被提取到 false
。这告诉我,copyToOutput
实际上应该将文件复制到使用的构建文件夹中。为什么它在我的情况下不起作用?
以下是您可以遵循的一些简单步骤: