我有一个MVC项目,我正在使用jquery,bootstrap和nuget的其他一些文件.默认情况下,在mvc中,所有脚本文件都在,Scripts并且所有css文件都在Content您所知的位置.我将所有脚本和css文件移动到Content/css,Content/js,之后我遇到了问题,因为当我更新我的nuget包时,文件将进入默认位置(js => Scripts,css => Content).
那么我该如何解决这个问题呢?可能吗 ?
我环顾四周阅读了很多,但找不到明确的答案来解释“ nuget.props”文件的含义以及它的用途是什么?
任何解释,也许有一些例子会有所帮助?
我有一个针对 .NET Framework 4 的项目。我正在使用nuget.exe(version 5.6.0.6591) 创建 NuGet 包。Microsoft.CSharp项目本身除了程序集之外没有其他引用System(这些都没有特定的版本集)。
首先,我创建了一个MyProject.nuspec文件(通过nuget spec在MyProject.csproj文件夹中运行)。然后我尝试运行nuget pack MyProject.csproj并获取 NuGet 包(.nupkg存档)。但我也收到了这个警告:
WARNING: NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below:
- Add a dependency group for .NETFramework4.0 to the nuspec
Run Code Online (Sandbox Code Playgroud)
根据https://learn.microsoft.com/en-us/nuget/reference/errors-and-warnings/nu5128,我修改了我的.nuspec文件,现在它看起来像这样(注意标签<dependencies> …
我有一个相当复杂和大型的项目,我想尝试打包作为内部使用的nuget包.我想避免复制文件,因为有很多(150 MB +二进制文件).相反,我试图使用该<file ...>元素将包蓝图文件指向文件.这是我可以重现我的问题的文件的简化版本:
<?xml version="1.0"?>
<package >
<metadata>
<id>AgentCore</id>
<version>6.1.0</version>
<authors>kkm</authors>
<description>AgentCore</description>
<references>
<reference file="Utils.dll" />
</references>
</metadata>
<files>
<file src="Kigo\bin\Release\Utils.dll" target="/lib/net40"/>
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我都会收到错误:
无效的程序集引用'utils.dll'.确保lib目录中存在名为"utils.dll"的文件.
我尝试了这个答案的建议,但无济于事.
是否可以避免在物理上布局目录,如NuGet文档中所述,并使用文件引用代替?
我想要一个nuspec文件,它可以自动读取所有信息packages.config等等,构建所有依赖项,但也只包含一个附加文件。
有没有办法做到这一点?
例如,这是一个nuspec几乎可以完成我想要的文件:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata>
<id>My.Project</id>
<version>1.0.0.0</version>
<owners>Me</owners>
<authors>Me</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<title>My.Project</title>
<description>My.Project</description>
<frameworkAssemblies />
<copyright>Copyright © 2015</copyright>
<tags></tags>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
如果我的项目引用了 10 个nuget包,上面的nuspec文件将检测到并在我将包打包在一起时将它们添加为依赖项。
但是,当我添加一个files元素时,所有到我其他 nuget 依赖项的自动链接都会停止:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<metadata>
<id>My.Project</id>
<version>1.0.0.0</version>
<owners>Me</owners>
<authors>Me</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<title>My.Project</title>
<description>My.Project</description>
<frameworkAssemblies />
<copyright>Copyright © 2015</copyright>
<tags></tags>
</metadata>
<files>
<file src="myfile.dll" target="lib\net45" />
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
如果没有自动链接,我必须有效地为我的项目维护所有依赖项的两份副本:一份在csproj文件中,一份在此处。
一定有办法做到这一点?!我只想通过 nuspec 向我的包中添加一个额外的文件。
我需要nuget pack生成一个只有3位数的包版本(我们希望对它进行语义版本控制)但是当我在一个AssemblyVersion属性设置为"1.0.0" 的csproj上调用它时,生成的nupkg文件以版本"1.0结束.0.0"在它的元数据(和文件名)中.为什么命令行工具不支持AssemblyVersion属性上指定的位数?
我通过调用nuget speccsproj文件启动了这个,它生成了一个这样的stub nuspec文件(它实际上包含了带有占位符值的更多标签,但我删除了它们,因为我们不需要它们):
<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Release notes.</releaseNotes>
<copyright>Copyright 2015</copyright>
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)
将此nuspec文件在TFS中与csproj文件放在同一文件夹中,我们现在可以像这样调用pack:
nuget pack MyProject.csproj
Run Code Online (Sandbox Code Playgroud)
项目的AssemblyInfo.cs文件包含一行显式设置版本:
[assembly: AssemblyVersion("1.0.0")]
Run Code Online (Sandbox Code Playgroud)
除了工具在检索装配版本时使用4位数这一事实外,它完全正常工作.当我右键单击文件浏览器上的dll并转到详细信息时,甚至Windows显示只有3位数的版本.为什么NuGet使用4位数字?我也许错过了一些明显的东西?
对nuspec中的版本进行硬编码显然不是理想的,因为那时我们必须将版本号保持在两个不同的位置,而它们的目的始终是相同的.我的意思是,这应该$version$是NuGet本身知道如何从项目中提取的特殊占位符值背后的想法.
我想创建一个nuget包,它只包含我的nuspec文件中指定的内容,但仍然从我的csproj中获取版本.为了使用我必须打包的令牌:
nuget pack MyProj.csproj
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,它会添加一些依赖项,并在我的nuget包中创建一个不需要的文件夹.我的nuspec文件是:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>Test</id>
<version>$version$</version>
<title>Test</title>
<authors>Test</authors>
<owners>Test</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Test</description>
<summary>Test</summary>
<releaseNotes>Test</releaseNotes>
<copyright>Test</copyright>
</metadata>
<files>
<file src="bin\Debug\*.dll" target="lib\net45" />
<file src="bin\Debug\MyProj.Wpf.exe" target="lib\net45" />
<file src="bin\Debug\MyProj.Wpf.exe.config" target="lib\net45" />
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
当我运行pack命令时,它添加的文件是target ="lib \net452"中的MyProj.Wpf.exe
我可以强制它不添加依赖项和这个额外的文件吗?或者只做nuspec中指定的内容?
我正在开发一个 NuGet 包并在 github.com 上保持开源
我安装后的包需要在 VS 解决方案中完成一些配置步骤,我在 github 上的 README.md 文件中记录了这一点。
我想在 NuGet 包中引用这个 README.md 文件,以便人们知道安装包后要做什么。
我已<projectUrl>在我的.nuspec 中指定文件中指向我在 github 上的 Git 存储库。但是对于用户来说,他们需要单击它来阅读文档并不明显。
我想让用户按照链接阅读完整文档,大声而清晰。最好有一个超链接,例如在.nuspec文件的<description>字段中,因此它在以下位置显示为超链接:
我尝试了不同的方法来添加链接,例如 XML 转义<和>as <and>但它没有将其显示为链接,而只是作为 html 文本。
我已经搜索了整个stackoverflow社区,但找不到答案...
我有一个.nuspec文件,我不知道该放在哪里。有些主题说我必须将其放在项目目录中并包含在版本控制中。其他人说,它只是将文件保存在与文件相同的目录中.nupkg...但是它对我不起作用。任何的想法?
提前致谢。
我们已经创建了很多 NuGet 包。其中之一是一个工具,它包含一个特殊的编译器,并且像dotnet tool. 命令的名称是“PolyGen”。
我们使用了与使用类似的机制Grpc.Tools,这意味着我们已经在 NugetPackage 中定义了 .targets 文件。它运作良好。
但是当我更新我的 PolyGen 时,之后我必须使用命令手动更新 dotnet 工具dotnet tool update。
但是我看到Grpc.Tools更新的时候,自动执行了dotnet工具更新。包管理器控制台写了以下消息:
Executing nuget actions took 181,36 ms
Run Code Online (Sandbox Code Playgroud)
我们如何定义这个自动执行的命令,以避免手动更新?
谢谢你们!