[英]Create Nuget package for dot net core project from static files
我创建了 npm package,其中包含 js 和 css 文件,类似于 bootstrap 作为文件夹结构。 我想运送相同的package FOR.NET MVC web应用程序,因此我创建了.nuspec
文件,从构建8821371063488指定files
,并创建了Nuget8888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888898888888号。
现在我想为 dot.net 核心项目发布相同的 package。 当我在 dot.net 核心 web 应用程序中安装相同的 Nuget package 时,它安装成功但没有将 static 文件复制到项目文件夹。
如何为 dot.net 核心应用程序创建/修复块 package 的 static 个文件。 我不想创建 .net 核心项目来传送 static 个文件。 如果我也可以为 dot.net 核心应用程序添加一些配置文件,如.nuspec
,那就太好了。
我已经搜索但无法获得任何帮助,因此任何建议或参考都会被应用。
myproject.nuspec
<?xml version="1.0"?>
<package >
<metadata>
<id>MyPackage</id>
<version>1.0.1</version>
<title>MyProject</title>
<authors>Me</authors>
<owners>Me</owners>
<projectUrl>some url...</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is similar to bootstrap</description>
<copyright>Copyright 2020</copyright>
<tags></tags>
<dependencies>
<dependency id="jQuery" version="[3.0.0, 4.0.0)" />
</dependencies>
</metadata>
<files>
<file src="dist\css\**\*.*" target="content\Content\css" />
<file src="dist\fonts\**\*.*" target="content\Content\fonts" />
<file src="dist\js\mypackage.js" target="content\Scripts" />
<file src="dist\images\**\*.*" target="content\Content\Images" />
</files>
</package>
更新:我尝试了@thatguy 下面给出的解决方案,它确实将文件复制到适当的文件夹中。 我可以在 Visual Studio 中看到这些。 但是新创建的文件和文件夹上面有箭头符号,而其他文件没有。 我尝试在页面代码中包含 css 但它没有找到新创建的文件。
这个箭头是什么意思,为什么找不到文件?
从 static 个文件为 dot.net 核心项目创建 Nuget package
您应该使用<package_id>.props文件。
1)在您的MyPackage中创建一个名为build
的文件夹,然后在其中添加一个名为MyPackage.props
的文件。
2)然后在其中添加这些:
<Project>
<Target Name="CopyFilesToProject" BeforeTargets="Build">
<Message Text="Copy css files to project" />
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..\..\content\**\*.* "/> //file from the nuget package
</ItemGroup>
<Copy
SourceFiles="@(SourceScripts)"
DestinationFiles="@(SourceScripts -> '$(MSBuildProjectDirectory)\%(RecursiveDir)%(Filename)%(Extension)')"
/>
</Target>
</Project>
3)更改为使用此nusepc文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyPackage</id>
<version>1.0.1</version>
<title>MyProject</title>
<authors>Me</authors>
<owners>Me</owners>
<projectUrl>some url...</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is similar to bootstrap</description>
<copyright>Copyright 2020</copyright>
<tags></tags>
<dependencies>
<dependency id="jQuery" version="[3.0.0, 4.0.0)" />
</dependencies>
</metadata>
<files>
<file src="dist\css\**\*.*" target="content\Content\css" />
<file src="dist\fonts\**\*.*" target="content\Content\fonts" />
<file src="dist\js\mypackage.js" target="content\Scripts" />
<file src="dist\images\**\*.*" target="content\Content\Images" />
<file src="build\MyPackage.props" target="build" />
</files>
</package>
4)重新打包您的项目MyPackage ,然后首先在您的主项目中先卸载旧的 nuget package MyPackage 。
然后, 先清理 nuget 缓存或删除C:\Users\xxx(current user)\.nuget\packages
下的所有缓存。
之后,安装新版本的MyPackage ,然后先构建你的项目,你可以看到主项目下复制了文件。
==================================
更新 1
如果您希望这些文件仅在Net Core项目上复制,您应该放弃在nupkg
中使用内容节点。 package安装时会自动复制文件到.NET Framework主工程中。
相反,您可以将这些文件放在nupkg的一个名为resource的不同文件夹下。
你可以按照我的步骤:
1)将MyPackage.props
文件更改为:
<Project>
<Target Name="CopyFilesToProject" BeforeTargets="Build">
<Message Text="Copy css files to project" />
<ItemGroup>
<SourceScripts Include="$(MSBuildThisFileDirectory)..\..\resource\**\*.* "/> //file from the nuget package
</ItemGroup>
<Copy
SourceFiles="@(SourceScripts)"
DestinationFiles="@(SourceScripts -> '$(MSBuildProjectDirectory)\%(RecursiveDir)%(Filename)%(Extension)')"
/>
</Target>
</Project>
2)将xxx.nuspec
文件更改为:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyPackage</id>
<version>1.0.1</version>
<title>MyProject</title>
<authors>Me</authors>
<owners>Me</owners>
<projectUrl>some url...</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>This is similar to bootstrap</description>
<copyright>Copyright 2020</copyright>
<tags></tags>
<dependencies>
<dependency id="jQuery" version="[3.0.0, 4.0.0)" />
</dependencies>
</metadata>
<files>
<file src="dist\css\**\*.*" target="resource\Content\css" />
<file src="dist\fonts\**\*.*" target="resource\Content\fonts" />
<file src="dist\js\mypackage.js" target="resource\Scripts" />
<file src="dist\images\**\*.*" target="resource\Content\Images" />
<file src="build\MyPackage.props" target="build" />
</files>
</package>
3)然后重新打包你的项目并安装新的,在此之前,你应该先清理nuget缓存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.