我正在尝试将Nuget包中的内容文件提取到引用我的包的项目中。
Packages.config项目使用content文件夹
Project.json/PackageReference/NETCore SDK项目使用contentFiles文件夹
好的,很棒,我创建了一个.NET Core 2.1控制台应用程序项目,并按照NuGet ContentFiles Demystified博客文章的说明进行操作,该文章是在2016年写的,当时使用的是project.json
,但现在仍然适用。
我在c:\dev\ContentFilesExample\contentFiles\any\any\images\dnf.png
处创建了一个图像,然后创建了一个c:\dev\ContentFilesExample\ContentFilesExample.nuspec
文件,并复制粘贴了内容:
<?xml version="1.0"?>
<package>
<metadata minClientVersion="3.3.0">
<id>ContentFilesExample</id>
<version>1.0.0</version>
<authors>nuget</authors> <!-- The NuGet team authored this package -->
<owners>nuget</owners> <!-- The NuGet team owns this package -->
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>A content v2 example package.</description>
<tags>contentv2 contentFiles</tags>
<!-- Build actions for items in the contentFiles folder -->
<contentFiles>
<!-- Include Assets as Content -->
<files include="**/images/*.*" buildAction="EmbeddedResource" />
</contentFiles>
</metadata>
</package>
然后我使用命令nuget pack ContentFilesExample.nuspec
生成了Nuget包,然后使用Nuget包浏览器打开它。
太好了,我的图片如预期一样出现了。
现在是最后一个无法工作的步骤。我在我的.NET Core 2.1项目中安装了这个Nuget包,但是图片丢失了。在我的项目根目录、obj
文件夹或bin
文件夹中都找不到图片的痕迹。
我尝试像某些评论中所述的那样关闭并重新打开Visual Studio,但这并没有解决问题。
我还尝试将我的.NET Core项目风格更改为PackageReference
,但同样也没有解决问题。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="ContentFilesExample" Version="1.0.0" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
那么我做错了什么?Nuget包中的内容文件是否真正被.NET Core支持?
谢谢