- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在使用 NuGet v4 CLI 将文件复制到输出时遇到了问题。
我的目录结构如下所示:
repo
repo\CodeAnalyzer.nuspec
repo\CodeAnalyzer.props
repo\contentFiles\any\any\StyleCop.ruleset
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PackageName>CodeAnalyzer</PackageName>
<PackageVersion>0.1.0</PackageVersion>
</PropertyGroup>
<PropertyGroup>
<CodeAnalysisRuleSet>StyleCop.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
</Project>
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>CodeAnalyzer</id>
<description>Provides standard code analyzer tooling and customisation.</description>
<authors>Me</authors>
<version>0.1.0</version>
<dependencies>
<dependency id="StyleCop.Analyzers" version="1.1.118" />
</dependencies>
<contentFiles>
<files include="any/any/*" buildAction="Content" copyToOutput="true" flatten="false" />
</contentFiles>
</metadata>
<files>
<file src="contentFiles\any\any\StyleCop.ruleset" target="contentFiles" />
<file src="CodeAnalyzer.props" target="build" />
</files>
</package>
.\nuget.exe pack .\CodeAnalyzer.nuspec
最佳答案
contentFiles
与 PackageReference
工作原理与 content
完全不同与 packages.config
.与 packages.config
,您必须使用工具 (Visual Studio) 来安装包,并且在安装时,NuGet 将复制 content
到项目目录和它需要的任何其他更改(例如告诉项目系统修改 csproj)。与 packages.config
恢复在概念上与安装不同,所有恢复所做的就是将包解压缩到预期位置,以便 lib/<tfm>/*.dll
程序集在编译时可用。
与 PackageReference
可以手动编辑 csproj,而无需工具知道发生了这种情况。这意味着当 NuGet 执行还原时,它不知道这是第一次为项目还原特定包,还是第一次在此计算机上还原(实际上,NuGet 甚至不检查项目的现有状态)机器上的项目,因此目前不知道该包是否已在当前计算机上的项目中恢复)。尽管您仍然可以使用工具(Visual Studio 或 dotnet add package
),但这只不过是一种编辑 csproj 的便捷方式。这是一个很长的路要说安装与恢复的概念不再存在于 PackageReference
.现在只有恢复。
由于 PackageReference
不再存在安装的概念,如果 NuGet 要将文件复制到消费项目的目录,那么如何处理内容文件是一个很大的问题。如果 NuGet 每次还原都复制文件,这意味着如果项目的开发人员修改了文件,他们将在下一次 NuGet 还原时丢失更改。如果 NuGet 不覆盖文件,则当项目更改包版本时,不会更新新包中的新内容。
所以,方式是contentFiles
工作是 NuGet 告诉构建系统有关这些文件的信息,并且它们被用作来自全局包文件夹的链接。在 .NET Framework TFM 的构建时或 .NET Core TFM 的发布时,文件将复制到输出目录。但是它们绝不会被复制到项目目录中。如果使用 Visual Studio,它们应该出现在解决方案资源管理器中,但是如果您单击一个文件来打开它,它将以只读模式打开,因为对使用的全局包文件夹进行项目特定的更改是不好的通过计算机上的所有项目。因此,从概念上讲,它类似于在每次构建时复制文件,并且为了阻止使用项目的开发人员进行更改,它不会将文件复制到目录中。这也意味着检查源代码管理的工作更少。
由于您使用的内容文件是构建时 Assets ,而不是运行时 Assets ,我建议 contentFiles
不是放置规则集文件的正确位置。我只是把它放在 build/
您的 props
旁边的目录文件。由于您的 props
file 没有指定规则集文件的路径,我相信它告诉 MSBuild 在 props 文件的目录中查找,所以它会起作用。最坏的情况是您将其更改为 $(MSBuildThisFileDirectory)StyleCop.ruleset
.这是假设您对无法修改规则集文件的消费项目没问题。如果您确实希望他们能够修改文件,那么 NuGet 不是合适的交付机制,我建议您查看 dotnet new item templates反而。
关于NuGet v4 contentFiles 没有被复制到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58767292/
我有一个 k*n矩阵 X 和 k*k矩阵A。对于X的每一列,我想计算标量 X[:, i].T.dot(A).dot(X[:, i]) (或者,数学上, Xi' * A * Xi )。 目前,我有一个
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我是 VueJS 的新手。我已经使用 vuetify/webpack-ssr 模板创建了一个项目,现在我想创建一个登录页面,但是没有显示表单,控制台给了我以下信息: [Vue warn]: Unkno
我尝试将 value 插入到 C++ vector v 之前的第 i 元素(或元素 (i-1) 之后) )。代码很简单 v.insert(v.begin() + i, value); 我确信当 i 介
我需要显示使用合并排序算法排序的 vector 。然而,当我使用 v.begin() 时,我的 friend 使用 v.data() 来传递 vector 。他的代码运行良好,而我的却不行。请解释。
这是我的命令(url1、url2、url3、url4 是占位符): ffmpeg -i url1 -i url2 -i url3 -i url4 -filter_complex “[1:v:0] [1
我以前用过Vue,我知道怎么用v-for渲染元素序列,v-if或v-show有条件地显示元素,并且 v-model例如,控制段落的内容。 但现在我需要对 DOM 进行更精细的控制: 我有一个range
我正在学习所有权和借用。 borrow1 和borrow2 的区别在于在borrow2 打印时使用了&: fn borrow1(v: &Vec) { println!("{}", &v[10]
我找不到一种方法来选择不同的选项来渲染 v-for 中的文本。是否有可能或者我是否需要以不同的方式构建逻辑来执行类似于下面的代码的操作? // i
Iterable 的三个直接子类型是 Map , Seq , 和 Set .除了性能问题之外,似乎还有一个 Seq是从整数到值的映射,以及 Set是从值到 bool 值的映射(如果值在集合中,则为 t
我想应用一个计算方法,如果键存在则增加值,否则将 1。有 Map map = new HashMap<>(); 我不明白为什么 for (int i = 0; i v != null ? v++ :
标准(IEEE 754/C)是否保证以下代码断言永远不会失败? int main() { for ( /* all possible float / double values */ )
代码由Vue语言编写,使用Element-ui框架, 如果一个对象包含某些内容,则会显示该内容,如果不包含则禁用菜单按钮。 输出应该是这样的: a、b(禁用)、c、d、e 但我的是这样的: a、a(禁
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
如果我这样做: {{ morevalue }} {{ value }} v-else 中的跨度也会在第二个 V-FOR 上循环,即使它上面没有任何 v-for,为什么? 这是
我将 Vue.js 与 Vuetify 一起使用,我正在尝试使用 v-data-table 从后端加载菜单列表并使用 对其设置一些权限v-switches 但我在尝试 v-model 数组时遇到问题:
我在 Java 的流式操作中努力维护我想要的数据结构,这很可能是由于缺乏正确的理解和实践。 public class Main { public static void main(String
我正在尝试为匹配中的每个匹配呈现一些 HTML,但是,我不太确定 实际上是正确的。 更具体地说,我不确定我是否可以使用 v-bind:match='match'在与循环相同的元素上 v-for='ma
所以我想知道为什么这个 v-if 和 v-else 语句不起作用,为什么我要以不同的方式解决它。 代码如下 Required: Select a Workflow {{ isChain ?
我有一个 VueJS 组件 ,我在同一个模板中使用了两次来显示两组不同的数据。每个都显示在自己的 使用 v-if 切换的容器在导航选项卡上。 似乎这些组件被实例化为同一个实例。我调用 console
我是一名优秀的程序员,十分优秀!