我正在尝试在nuget中打包文件夹和文件结构,以便将它们复制到目标项目中。也就是说,只有内容。我希望在安装nuget时复制所有这些文件和文件夹。
这是我的nuspec:
<?xml version="1.0"?>
<package>
<metadata>
<id>MVCViewProvider</id>
<version>1.0.0</version>
<authors>M</authors>
<owners>M</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Test Package</description>
<releaseNotes>Test Package</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="Controllers\**\*.*" target="Content\Controllers" />
<file src="Views\**\*.*" target="Content\Views" />
</files>
</package>
在PowerShell中执行此命令时:
nuget pack MVCViewProvider.nuspec
我收到了这个内容的包裹:
我的文件夹是视图和控制器。问题是,当我将nuget添加到其他项目时,没有创建任何内容。
我做错了什么?
答案 0 :(得分:3)
我做错了什么?
需要将包更改为使用contentFiles。因为与Packages.config
一起使用的NuGet包,并不总是在传递的NuGet环境(使用Project.json
或PackageReferences
的项目)中工作。在传递性NuGet环境中工作的包必须使用“contentFiles
”而不是“content
”。
例如,我创建了一个contentFiles
文件夹,其中包含子文件夹any\any\Controllers
和any\any\Views
。在Test.cs
文件夹中添加Controllers
,然后在Test.cshtml
文件夹中添加Views
:
然后在.nuspec
文件夹所在的文件夹TestNuGetSample
下创建contentFiles
:
以下是我的.nuspec
脚本:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>MyTestCore</id>
<version>4.0.0</version>
<authors>TestContentFile</authors>
<owners>TestContentFile</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<contentFiles>
<files include="any/any/Views/Test.cshtml" buildAction="content" flatten="true" copyToOutput="false"/>
<files include="any/any/Controllers/Test.cs" buildAction="content" flatten="true" copyToOutput="false"/>
</contentFiles>
</metadata>
<files>
<file src="contentFiles/any/any/Views/Test.cshtml" target="contentFiles/any/any/Views/Test.cshtml" />
<file src="contentFiles/any/any/Controllers/Test.cs" target="contentFiles/any/any/Controllers/Test.cs" />
</files>
</package>
然后将此.nupsec
文件打包到nuget包,并将其设置为nuget本地存储库。
在csproj中使用PackageReference创建一个新的测试项目ASP.NET Core MVC项目,然后安装该nuget包,Test.cs和Test.cshtml将被添加到新项目中:
希望这有帮助。