问题标签 [packagereference]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 具有 PackageReferences 自动到先决条件的 ClickOnce 应用程序
如何让 PackageReference 包自动包含在 ClickOnce 中?
我正在尝试将 ClickOnce 应用程序从 packages.config 转换为使用 PackageReferences,因为我有 30 多个 nuget 包(主要是依赖项),它使升级我实际需要参考的几个包变得更加容易。
问题是,一旦我这样做了,所有 nuget 包程序集现在都被视为“先决条件(自动)”而不是“包含(自动)”,从而使 ClickOnce 部署跳过它们。对于任何自定义 nuget 包,它还为我提供了“...必须经过强签名才能被标记为先决条件”。
更新:
事实证明,这根本行不通。像 System.Runtime 这样的程序集不包含在 ClickOnce 中,期间。没有包含它的选项,即使在手动将所有程序集设置为 Include 之后,它也最终破坏了部署(由于 System.Runtime 的 FileNotFoundException)。我不得不恢复到 packages.config。我很想看到 ClickOnce 更新以与 PackageReferences 一起使用
c# - update-package 运行时约束 PackageReference 升级版本
在 .NET 的旧版packages.config
NuGet 系统下,我可以allowedVersions
通过使用Package 元素上的属性来限制在更新包时考虑的包的可能版本
在update-package
Visual Studio 中为包括上述内容的项目运行时,不会发生更新,Newtonsoft.Json
因为我已使用该allowedVersions
属性固定到 10.0.3。
我怎样才能在 下实现这一点PackageReference
?将semver语法应用于 Version 属性只会影响恢复的版本- 它不会限制更新。因此,如果我指定以下内容PackageReference
并运行update-package
,例如,如果 11.0.1 在我的 NuGet 存储库中,我将升级到 11.0.1。
背景
我们依靠命令行工具来更新包,因为我们既有快速移动的内部包(一天更新多次)和更稳定的低移动包(例如:ASP.NET)。在大型代码库中,手动更新.csproj
文件中的每个依赖项对我们来说根本无法扩展(并且容易出错)。在packages.config
下面,我们可以“固定”我们不想升级的第三方包,也可以更新到最新的快速移动依赖项。
.net - 使用 PackageReference 从 NuGet 包的子文件夹中引用 DLL
我们正在将项目从 packages.config 升级到 PackageReference 结构。引用的包之一在子文件夹中具有 DLL,例如:
- lib\net45\some.dll
- lib\net45\xxx\other.dll
当使用 packages.config 从项目中引用此包时,该包的所有 DLL 都作为引用包含在项目中,并且工作正常。使用 PackageReference 时,它似乎只能识别根文件夹 (lib\net45) 中的 DLL。使用子文件夹中 DLL 的功能时,我们会遇到构建错误。有没有办法告诉 NuGet 在使用 PackageReference 时考虑 NuGet 包的子文件夹?
.net - 迁移到包引用格式后,配置文件转换在构建服务器上不起作用
我正在使用 Microsoft.VisualStudio.SLowCheetah (v3.0.61) 包在构建期间将多个配置文件转换为发布版本。
最近我已将解决方案中的所有项目从 packages.config 迁移到包引用格式。之后,SlowCheetah 执行的转换在构建服务器上中断。如果从 Visual Studio 2017 (v 15.6.7) 本地发布到文件系统,一切正常。之前SlowCheetah 的所有目标都是在末尾直接导入的
*.csproj
文件。在包引用方法中,已使用包中的所有目标都合并到
obj/PROJECTNAME.csproj.nuget.g.targets
文件。此问题仅影响 Web 项目。(带有集成测试的项目中 App.config 文件的转换工作正常。)
我在构建服务器上使用下一个命令来恢复包:
下一个用于构建解决方案:
带有配置文件的 csproj 文件片段:
我正在使用 MSBuild v 15.0
更新 1
*.csproj 文件包含下一个导入:
经过一番调查,我注意到如果从
至
转型开始发挥作用。
这种变化是否有其他影响?
msbuild - 如何让 msbuild /restore 为独立/非 SDK 项目文件工作?
我想msbuild /restore
与我的项目文件一起使用。但是,我的项目文件更像是一个脚本,它协调构建具有特定属性等的多个项目。因此,设置对我来说没有意义,Sdk="Microsoft.NET.Sdk"
因为这会导致出现奇怪的错误。但是,如果我不指定 Sdk,/restore
则会忽略它,并且它实际上无法恢复任何内容。
这是我的示例独立项目:
我的调用和输出:
visual-studio-2017 - Visual Studio 2017 将 packages.config 迁移到 PackageReference
当packages.config
使用Newtonsoft.Json
包迁移到PackageReference
csproj 格式时,我遇到了兼容性问题:
Newtonsoft.Json v10.0.3, install.ps1 脚本在迁移后安装包时会被忽略。
这是什么东西可以破坏什么吗?该项目在本地 VS 2017 中编译良好。但 TeamCity Visual Studio (sln) 构建失败并出现错误namespace name Newtonsoft could not be found
。这可能与迁移问题有关吗?
nuget - NuGet CLI 不为包引用还原包
我已经使用 Visual Studio 2017 创建了一个新的 .net 核心项目,然后将一个 nuget 包添加Newtonsoft.Json
到该项目中。之后我知道包将缓存在文件夹C:\Users\<UserName>\.nuget\packages
中。
由于某种原因,我必须删除它,然后我想恢复它,但我无法使用 nuget.exe 恢复它。nuget.exe restore
, 命令可以成功执行,但是包没有下载到那个文件夹。
这个命令我也试过了MSBuild /t:restore
,还是不行,包下载不了。
有什么建议吗?
c# - 在 Azure 云服务上使用带有 PackageReference 的 ValueTuple
我正在尝试将我的 c# 项目从旧的 csproj 样式转换为新的 csproj 样式,但这会在运行时破坏我的 Azure 云服务,因为System.ValueTuple.dll
复制的是 ReferenceAssembly 而不是实现程序集。
这与此已关闭/已放弃的问题中描述的问题相同。
由于我的项目目前针对 .NET 4.6.2,因此可以通过针对 .NET 4.7+ 来“解决”这个问题,因为它是附带的System.ValueTuple
,因此不需要将其作为 NuGet 包进行引用。
如果可能的话,我想避免这种情况,因为:
- 这需要一个额外的部署步骤来在工作角色上安装 .net 4.7+ 运行时,因为它们安装了 .net 4.6.2。https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-guestos-update-matrix#family-5-releases
- 这似乎是“简单的出路”,我想知道问题是否可以通过其他方式解决。
问题的补充说明:
我将使用:
refDLL
对于:packages\system.valuetuple\4.5.0\ref\net461\System.ValueTuple.dll
和libDLL
为packages\system.valuetuple\4.5.0\lib\net461\System.ValueTuple.dll
.
它们很容易区分,例如refDLL
40 kb 和libDLL
78 kb。
实际代码和完整的构建日志文件可在此处找到:https ://www.dropbox.com/s/kquv5voa19jfonz/AzureCloudService1.zip?dl=0
我有一个解决方案结构如下:
- AzureCloudService1
- WorkerRole1(旧 csproj)
- WorkerRole2(新 csproj)
搭建云服务后
WorkerRole1\bin\Debug
有libDLL
。WorkerRole2\bin\Debug\net461
有libDLL
AzureCloudService1\obj\Debug\WorkerRole1
有libDLL
AzureCloudService1\obj\Debug\WorkerRole2
有refDLL
从日志中,我注意到 WorkerRole1 和 WorkerRole2 之间存在以下差异。
工人角色1:
工人角色2:
在各种 Microsoft 问题跟踪器上搜索其他相关问题后,我找到了这个,似乎相关:https ://github.com/dotnet/sdk/issues/1738 。
visual-studio - .NET 完整框架项目在哪些版本的 Visual Studio 中支持 PackageReference?
根据https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files
.NET 完整框架项目支持 PackageReference
那是在哪个版本的 Visual Studio 中?