繁体   English   中英

从 static 个文件为 dot.net 核心项目创建 Nuget package

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM