Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于PackageReferece项目的Nuget静态内容包装

用于PackageReferece项目的Nuget静态内容包装
EN

Stack Overflow用户
提问于 2018-02-12 08:24:09
回答 1查看 6.8K关注 0票数 8

我有一个类库(net47)项目,我想打包到一个nuget和几个静态内容文件(js、css、图像.)中。我想使用这个dll和消费者项目的内容。这些项目将是MVC PackageReference项目。在这些项目中,本地静态文件位于wwwroot文件夹中。

我尝试过这样做:NuGet ContentFiles解谜,但是我会引用js和css文件(它们不会复制到我的项目内容中)。

在我的nuspec中,我尝试了所有构建选项: EmbeddedResource、内容、无和编译,但是这些引用总是在编译模式下导入的。因此,当我开始调试时,会得到一个编译错误。

我知道这在Package.config项目中是可能的,这很简单,但我所有的消费者项目都将是PackageReference。

这是我的新台币

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>MyProject</id>
    <version>1.0.0</version>
    <authors>My</authors>
    <owners>My</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>LVP</description>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
    <contentFiles>
        <files include="any/any/bd.js" buildAction="content" flatten="true" copyToOutput="false"/>
    </contentFiles>
  </metadata>
  <files>
    <file src="contentFiles/any/any/bd.js" target="contentFiles/any/any/bd.js" />
  </files>
</package>

我用下面的powershell命令打包我的nuget:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nuget pack MyProject.nuspec

尽管我也尝试了csproj:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nuget pack MyProject.csproj

我的源文件夹结构是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\...[projectPath]...\contentFiles\any\any\bd.js

安装忽略了我的构建操作。为什么总是试图编译我的内容文件?是否有更好的方法向使用者项目中添加静态内容?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-12 19:17:53

安装忽略了我的构建操作。为什么总是试图编译我的内容文件?是否有更好的方法向使用者项目中添加静态内容?

为了回答前面的问题nuget上的打包文件,我创建了一个示例nuget包,并为内容文件将构建操作设置为content,在安装该nuget包之后,构建操作将被设置为content

然后我检查了你的.nuspec文件,发现它应该是正确的。因此,这个问题与您的.nuspec文件无关。

除了之外,在上面的图像中,您将注意到内容文件的路径是nuget本地缓存:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Users\<UserName>\.nuget\packages\

NuGet在安装nuget package时将首先从本地缓存中提取nuget包,以避免下载已经在计算机上的包。在其他病房,尽管我们已经更新了本地的nuget包,nuget将首先检测本地缓存,如果它在缓存中找到相同的包,nuget将从缓存而不是本地提要安装它。

要解决此问题,请在安装更新的nuget包之前尝试删除本地缓存中的nuget包。通常情况下,当我们再次打包相同的包时,我们将d better change the package version in the.nuspec`文件,以便nuget本地缓存不会捕获它们。

注释更新:

我尝试增加版本号并删除nuget缓存,问题仍然存在。我的构建操作总是设置为"C#编译器“。我只是尝试更改js文件的名称,然后项目导入新的名称,所以我不认为这是缓存问题

在测试您的nuget包之后,我发现了出现此问题的原因,src target 和路径在 .nuspec 文件中应该保持相同的路径。由于您希望将内容文件设置为wwwroot文件夹,所以应该在wwwroot文件夹中设置该文件,然后打包.nuspec

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<contentFiles>
  <files include="any/any/wwwroot/css/bd.css" buildAction="Content" copyToOutput="false" flatten="true" />
  <files include="any/any/wwwroot/js/bd.js" buildAction="Content" copyToOutput="false" flatten="true" />
</contentFiles>

在我的.nuspec脚本中(不需要内容节点)如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>BancaDigitalViewProvider</id>
    <version>1.0.37</version>
    <authors>Ibercaja</authors>
    <owners>Ibercaja</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Login View Provider</description>
    <copyright>Copyright 2018</copyright>
    <tags>Banca Digital View Provider</tags>
    <dependencies />
    <contentFiles>
      <files include="any/any/wwwroot/css/bd.css" buildAction="Content" copyToOutput="false" flatten="true" />
      <files include="any/any/wwwroot/js/bd.js" buildAction="Content" copyToOutput="false" flatten="true" />
    </contentFiles>
  </metadata>

  <files>
    <file src="contentFiles/any/any/wwwroot/css/bd.css" target="contentFiles/any/any/wwwroot/css/bd.css" />
    <file src="contentFiles/any/any/wwwroot/js/bd.js" target="contentFiles/any/any/wwwroot/js/bd.js" />
    <file src="bin\debug\BancaDigitalViewProvider.dll" target="lib\net47\BancaDigitalViewProvider.dll" />
  </files>
</package>

这是nuget包裹:

YVODIVHfhTk5xutPpaBZLC-A

你可以下载并测试。

然后将其安装到ASP.NET核心MVC项目中:

希望这能有所帮助。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48751019

复制
相关文章
将静态文件打包进nuget里 Net Core
我之前写了一个.net core 生成验证码的小工具 需要使用者先单独下载字体文件到本地在 install-package
乔达摩@嘿
2021/05/24
6420
将静态文件打包进nuget里 Net Core
dotnet tool 自动找到项目里面重复的 NuGet 依赖项
使用新的 SDK 风格的 csproj 的时候,允许 NuGet 包进行依赖传递。意思是如果我 A 项目安装了库 L 那么如果有 B 项目引用 A 项目,那么自动 B 项目也就安装了库 L 而不需要项目 B 再次手动安装。也就是如果此时的 B 项目里面也加上了 L 库的安装,那么这个安装就是多余的。本文安利大家一个工具,可以自动了解有哪些项目的哪些库是多余安装的,通过依赖传递就能安装上,不需要手动安装,可以删除
林德熙
2021/02/22
7260
SpringBoot获取配置项原内容
那么使用该工具类getProperty("my.url")获取到的就是 https://${my.name}.com 原文, 而不是 https://test.com
code-x
2023/02/23
9610
调查显示,77%的Rootkit用于间谍目的
全球网络安全公司Positive Technologies发布了一份新的调查报告,对过去10年臭名昭著的恶意软件——Rootkit进行了详尽分析。
FB客服
2021/11/16
6790
适用于 Go 项目的 Makefile 指南
编写项目的过程中,经常需要对文件进行编译和执行,查看功能开发或者修复的 Bug 是否正确。你当然可以直接执行 go build 命令用来编译,执行 go run
谢伟
2019/04/09
2K0
Vue3项目的创建和托管
前面我们在学习Vue的时候都是将Vue的代码直接写在html文件的script中,但实际工作中,我们会使用工具(比如vue-cli)创建完整的项目结构,同时将vue项目托管于nodeJS等JS运行时,实现前端服务的生产化部署。
Python研究所
2022/06/17
7440
Vue3项目的创建和托管
finecms如何调用多个指定栏目的内容
  想调用finecms多个栏目的内容,用英文状态下的逗号来分开多个id实现不了(catid=1,2,3),要如何写噢?后面ytkah想想这个跟sql语法有点一样,用IN_catid = 1,2,3果然成功了 {list action=module IN_catid = 1,2,3 order=updatetime num=10} 标题:{$t.title} 地址:{$t.url} {/list}    相关文章: finecms如何调用多个栏目的子栏目
ytkah
2018/03/06
1.4K0
我所有在线项目的Nginx配置内容
有几个小伙伴想看看我的Nginx是怎么配置的,我这里放出来吧。 其实没太多内容,都是基本的配置: 1、域名的代理(正向/反向); 2、IP地址获取; 3、SingleR Header配置; 4、前后端配置; 5、域名配置; 6、HTTPS配置; 7、负载配置; #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.
老张的哲学
2022/04/11
5070
8 个用于业余项目的优秀 Python
在 Python/Django 的世界里有这样一个谚语:为语言而来,为社区而留。对绝大多数人来说的确是这样的,但是,还有一件事情使得我们一直停留在 Python 的世界里,不愿离开,那就是我们可以很容易地利用一顿午餐或晚上几个小时的时间,把一个想法快速地实现出来。
py3study
2020/01/17
5910
iOS 静态类库项目的创建与使用
打开 Xcode , 选择 File -> New -> Workspace , 将 Workspace 命名为 Test.xcworkspace , 并选择合适的目录。
beginor
2020/08/10
7220
iOS 静态类库项目的创建与使用
在制作多框架项目的 NuGet 包时应该注意的问题(buildMultiTargeting/TargetFrameworks)
制作一个 dll 引用的 NuGet 包简直是一键完成,无论是不是多框架项目;制作 dotnet-tools 也是如此。但如果需要自定义一些编译步骤,那么就需要在制作 NuGet 包时做很多的特殊处理了。
walterlv
2023/10/22
3830
网站静态内容出版解决方案
目录 1. 架构总览 2. cdn 3. www 服务器 4. cms 服务器 5. img 6. Ajax 局部更新与缓存 1. 架构总览 www 负责静态文件浏览, 台数不定, 可以采用零成本的DNS轮询, 或者4层LVS, 或者7层HAProxy, 还可以用F5, Array 等负载均衡设备. cms 负责静态文件生成. 生成后的文件要同步到www中, 或者采用网络共享, 再者使用分布式文件系统, 总之将生成的文件交给www服务器, 根据你压力横向扩展即可 img 负责图片文件浏览. 通过给图片加版本
netkiller old
2018/03/05
1.2K0
react-admin+material ui5.0项目的总结
为了更好的进行前后端的设计开发 后端目前用postgrest设计数据库 前端直接使用react-admin和material ui 5.0进行开发 大大增加开发效率
爱学习的前端歌谣
2023/10/18
3570
react-admin+material ui5.0项目的总结
nuget的原理_NuGet 跨平台插件
已添加 NuGet 4.8 + 跨平台插件支持。In NuGet 4.8+ support for cross platform plugins has been added.
全栈程序员站长
2022/11/16
7960
Roslyn 打包 NuGet 包 BuildTransitive 文件夹用于穿透依赖传递拷贝文件
默认的 PackageReference 可以实现传递依赖,传递依赖的含义是是假定 B 项目安装了 A 库,而 C 项目依赖 B 项目,那么 C 项目将会自然拿到 A 库的 DLL 引用。但默认的 NuGet 包的构建指导文件 targets 命令是不会在传递执行的,也就是如上的 C 项目将不会执行 B 项目安装的 A 库里面的 target 内容 有一些项目需要拷贝自定义文件,例如拷贝图片或者一些 Native 的 DLL 等资源。如 WPF 框架需要拷贝 PenIME 等资源。如果只是在最底层的项目安装了库,那为了让可执行文件项目也输出库的资源,就需要在可执行项目上也安装库。以上的方法的不足在于安装复杂,也许会忘记安装 本文告诉大家一个解决方法是通过在制作库的时候,加上 BuildTransitive 文件夹,在此文件夹内添加构建指导文件,此时这个构建指导文件 targets 文件里面的命令将会在传递中执行,也就是说只需要在底层的项目安装即可,不需要在可执行项目上也安装库
林德熙
2021/12/24
7250
适用于既有大型MPA项目的“微前端”方案
对于大多数有点历史的复杂前端项目来说,应该已经经历了从刀耕火种的大型单仓库构建到多业务应用独立开发部署的过程。当用户访问页面时,由 nigix等负责根据路由分发到不同的业务应用,由各个业务应用完成资源的组装后返回给浏览器。这种情况下,开发、构建已经可以各自独立进行,在这样一套健全体系下的开发者们,想必是很幸福的。
有赞coder
2020/08/24
1.8K0
适用于既有大型MPA项目的“微前端”方案
详解基于Vue2.0项目的webpack配置文件
Vue提供了一个很好的命令行工具:vue-cli,用来快速构建Vue项目。 现在,我们改造一个由vue-cli创建的simple project,使其提供更强大的功能。
娜姐
2022/05/13
2.1K0
详解基于Vue2.0项目的webpack配置文件
包装类
1.什么是包装类 把基本数据类型包装成一个对象,以面向对象的思想来使用这些类型 基本数据类型 对应的包装类 byte Byte short Short int Integer long Long float Float double Double Char Character boolean Boolean 用包装类比起基本类型它是以类创建对象的形式,所以它有更多的功能性有很多方法可用 2.装箱操作 装箱就是把基本数据类型转为包装类,以整型为例 int a = 5; Integer b = new
木瓜煲鸡脚
2019/07/22
4700
包装类
[Linux] Nginx 提供静态内容和优化积压队列
1.try_files指令可用于检查指定的文件或目录是否存在; NGINX会进行内部重定向,如果没有,则返回指定的状态代码。例如,要检查对应于请求URI的文件是否存在,请使用try_files指令和$ uri变量,如下所示: server { root /www/data; location /images/ { try_files $uri /images/default.gif; } } 2.对NGINX配置进行微小优化可以提高生产力并帮助实现最佳性能。启用se
唯一Chat
2019/09/10
6250
[Linux] Nginx 提供静态内容和优化积压队列
点击加载更多

相似问题

MVC用静态内容包装内容。UserControls?

22

Nuget包装,取决于Nuget包装的1?

11

RecyclerView项不包装内容

211

Nuget包仅包含某些项目的依赖项

12

Nuget包装含量

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文