在 .NET 的packages.configNuGet旧系统下,我可以通过使用allowedVersionsPackage 元素上的属性来限制更新包时考虑的包的可能版本
<package id="Newtonsoft.Json" version="10.0.3" allowedVersions="[10.0.3]" />
Run Code Online (Sandbox Code Playgroud)
当update-package在Visual Studio中运行,包括上述项目,将发生没有更新Newtonsoft.Json,因为我已经使用固定到10.0.3allowedVersions属性。
我怎样才能做到这一点PackageReference?将semver语法应用于 Version 属性只会影响恢复的版本- 它不会限制更新。因此,如果我指定以下内容PackageReference并运行update-package,例如,如果 11.0.1 在我的 NuGet 存储库中,我将升级到 11.0.1。
<PackageReference Include="Newtonsoft.Json" Version="[10.0.3]" />
Run Code Online (Sandbox Code Playgroud)
我们依靠命令行工具来更新包,因为我们有快速移动的内部包(一天更新多次)和更稳定的低移动包(例如:ASP.NET)。在大型代码库中,手动更新.csproj文件中的每个依赖项对我们来说根本无法扩展(并且容易出错)。在下面,packages.config我们可以“固定”我们不想升级的第三方软件包,也可以更新到最新的快速移动依赖项。
我的 NetStandard 项目中有以下内容
<ItemGroup>
<PackageReference Include="MyReference" Version="1.0.*" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
当我将它更改为使用通配符(而不是 1.0.1)时,我会在依赖项切换上看到一个感叹号,然后是 NuGet 切换,当然还有包本身。
当我签入时,CI 构建也在另一端失败,给我
无法找到包 MyReference。源中不存在具有此 ID 的包:Microsoft Visual Studio 离线包,nuget.org
使用没有通配符的实际版本 (1.0.1) 时,上述所有问题都会消失,但我想确保 .NET Core 还原任务始终还原到最新包,我希望一个简单的通配符可以做到.
注意 - 我正在使用我自己的私有 NuGet 存储库(包管理扩展)
请指教。
为什么在 CI 构建期间使用通配符会失败,表明它找不到包?
因此,假设我已将 project1 部署到我自己的 NuGet 存储库。Project2 依赖于 Project1,它已作为 NuGet 包添加到 Project2。Project1 包驻留在我自己的存储库中,没有问题也没有错误。
当我使用通配符并在本地构建时,它可以工作并恢复最新版本。当我签入代码更改(在 .csproj 中保留通配符)时 - CI Build 失败并显示上述错误消息。
azure-devops azure-pipelines-build-task azure-pipelines azure-pipelines-release-pipeline packagereference
我们最近升级了我们的程序集以使用该PackageReference格式而不是packages.configNuGet 依赖项的格式。执行此操作后,其中一个软件包OctoPack停止工作。有什么方法可以OctoPack在仍然使用该PackageReference格式的情况下开始工作吗?
我有一个包含 XML 文档文件的 nuget 包。
packages/MyPackage.1.0.0/lib/net472/MyPackage.xml
但是,当我构建我的项目时,我想在输出中包含这个 xml 文件。
所以当我:
dotnet MyProj.csproj -c Release
我想得到:
> ls bin/Release/net472
MyProj.dll
MyPackage.dll
MyPackage.xml
Run Code Online (Sandbox Code Playgroud)
然而,它永远不会出现。我怎么才能得到它?
我使用 Visual Studio 2022。我看到,它将 NuGet-Packages-Reference 作为 PackageReference 存储在 csproj-File 中。现在我正在搜索 nupkg 文件。它们存储在 Visual Studio 2022 中的哪里?我没有找到他们。
所以我从 nuget packages.config 迁移到 PackageReference 并发现存在一些兼容性问题。我将项目恢复到它的工作状态(在 PackageReference 之前),现在我的项目没有编译。
我收到以下错误:
严重性代码描述项目文件行抑制状态错误在 C:\Users\user.nuget\packages 中找不到版本为 6.2.0 的包 EntityFramework。运行 NuGet 包还原以下载包。数据库管理器
这发生在多个包上。由于某种原因,Nuget 似乎正在 user.net\package 目录中搜索包。最初,项目中有一个包含所有包的文件夹。
我通过编辑 NuGet.Config 文件强制全局路径位于项目内的文件夹中。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="C:\Projects\App\App Source\packages\" />
<add key="globalPackagesFolder" value="C:\Projects\App\App Source\packages\" />
</config>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
<add key="automatic" value="True" />
</packageRestore>
<bindingRedirects>
<add key="skip" value="False" />
</bindingRedirects>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 Nuget 一直在那个位置寻找包裹。它应该查看项目中的包文件夹。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.2.0" targetFramework="net46" />
<package id="EntityFramework6.Npgsql" version="3.1.1" targetFramework="net46" …Run Code Online (Sandbox Code Playgroud) visual-studio nuget-package nuget-package-restore packagereference
根据规则,我必须提出一个新问题,以澄清另一个问题/答案。
这个答案是这个:https : //stackoverflow.com/a/45964469/305916
然后呢?刚刚做了接受的答案,但packages.config 文件没有填充包(我知道它没有这么说)。
如果包自动出现在packages.config 中,或者我需要再次安装它们,我会错过下一步该怎么做...
我倾向于后者,但我觉得答案不完整:)
但是该怎么办呢?
这里简单设置:
输出: SeriLog DLL不会复制到ProjectA的输出文件夹,也不会复制到TestProject B。从我的角度来看, TestProjectB应该包含 SeriLog.dll。我错过了什么吗?或者还有其他选择可以实现这一目标吗?
备注: 据我从PackageReference 格式规范中理解,我正确使用了属性。
ExcludeAssets属性控制已定义该属性的项目的资产。PrivateAssets控制使用项目 A 的项目的流量。
我有一堆 Xamarin.Forms 跨平台应用程序的解决方案。我正在进行重构,正在将内容迁移到 Nuget PackageReferences。这样做时,我遇到了一些引用 Xamarin.Forms 的便携式应用程序项目的问题,因此我决定从这些应用程序中卸载包并重新安装,然后一切正常。但是,在这样做时,我意识到如果我不在便携式应用程序包上重新安装 Xamarin.Forms,事情仍然可以编译和工作。
有人可以向我解释一下,包含 Xamarin.Forms 代码的 C# 项目如何可能不需要引用 Xamarin.Forms 包进行编译?这与 Nuget PackageReferences 有关系吗?

nuget ×7
c# ×3
msbuild ×3
azure-devops ×1
azure-pipelines-release-pipeline ×1
csproj ×1
nuget-update ×1
octopack ×1
xamarin ×1