- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要处理一个唯一要点是引用 NuGet 包的项目,然后 Visual Studio 将下载并更新该包(及其所有依赖项)(目前对我来说是 2017 年)。1 (这有点类似于 another question 中的描述。)
当我创建 .NET Framework 4.7.1 项目时,我可以使用 VS 的“管理 NuGet 包”功能来选择所需的包,VS 会将包下载到解决方案目录中,并下载我的构建脚本可以根据.csproj
中找到的信息找出要复制到我的实际项目文件夹中的DLL文件( <HintPath>
等)。
但是,当我对 .NET Standard 2.0 项目执行相同操作时,VS 将使用新的简化 .csproj
格式。它所提到的(显式和传递性)所需的包只是一个 <PackageReference>
元素仅包含我明确选择引用的每个包的包名称和版本。我的脚本不足以将引用移植到目标 .csproj
文件。2
在面向 .NET Standard (2.0) 时,是否还有一种通过此类虚拟项目管理 NuGet 包的好方法?
<小时/>1:造成这种情况的原因包括大量单独的解决方案,其中许多需要相同的包,并且并非所有开发人员都应该自己管理这些包,以及不支持 NuGet 的环境他们自己的(例如Unity游戏引擎,所以a separate project to manage and pull NuGet references is the way to go)。
2:即使 Unity 项目中配置的“API 兼容性级别”是“.NET Standard 2.0”,.csproj
Unity 生成的文件将使用“旧式”详细格式(看起来实际上是针对 .NET Framework 4.*),因此需要引用库的显式路径。
最佳答案
正如我在对该问题的评论中提到的,忽略问题脚注,这看起来像是一个通用的 .NET 问题,我希望谷歌会向进行通用搜索的人推荐此页面,而不仅限于 Unity,而且它不会对于阅读该问题的其他人来说,很明显,在他们阅读了问题的大部分内容之前,该问题是针对 Unity 的。因此,我将首先给出通用 .NET 开发的答案。
如果涉及的所有项目都使用PackageReference
,那么不需要做任何特别的事情。只需从新项目模板创建 .NET 标准类库,添加对所需包的包引用,然后从要使用该组 NuGet 包的应用创建对类库的项目引用。
如果您有一个没有任何软件包的非 SDK 样式项目,那么您应该添加 <PackageRestoreStyle>PackageReference</PackageRestoreStyle>
。原因是PackageReference
在 NuGet 启动多年后添加到 NuGet,使用包的原始方式是 packages.config
。因此,当项目未选择 PackageReference
时恢复样式,默认为packages.config
。请参阅下一段。
如果您有一个使用 packages.config
的非 SDK 样式项目(或者没有软件包并且没有选择 PackageReference
恢复样式),那么这种方法可能不起作用。构建系统将构建应用程序的程序集,并可能复制 csproj
中直接引用的所有引用。 ,这意味着它将获取您的类库 dll 以及直接引用的任何 nuget 包。但是,由于应用程序 csproj 不知道类库的 NuGet 包,因此不会复制它们。通常,类库引用它使用的包,.NET 构建系统将使用名为 ResolveAssemblyReferences 的东西。查看类库 dll,看看它有哪些依赖项,然后复制这些 dll。但是,在这种情况下,类库项目没有任何编译依赖项,因为它从未使用项目引用的任何 NuGet 包。
这是 NuGet 和 .NET 团队鼓励客户迁移到 PackageReference
的原因之一。有很多问题,比如传递依赖,以及 <HintPath>
当项目移动时会变坏,只要您使用的项目类型支持它,效果就会更好。
现在,鉴于问题脚注提到提问者希望为 Unity 项目执行此操作,我将给出一个希望有效的答案。请注意,虽然我在 NuGet 客户端团队工作,但我对 Unity 一无所知,并且今天早上浪费了大约 2 个小时来安装它并尝试了解其功能,结果发现 Unity 似乎不支持 NuGet 或项目完全引用。
所以我的建议是:
使用dotnet publish
让 .NET 构建系统将所有相关 dll 复制到一个文件夹中,然后您可以在 Unity 项目中引用
或
多目标类库以同时面向 .NET Standard 2.0 和 .NET Framework 4.7.1(调整 .NET Framework 版本以使用与 Unity 项目使用的版本相同的版本)。通过更改 <TargetFramework>netstandard2.0</TargetFramework>
来完成此操作至<TargetFrameworks>netstandard2.0;net471</TargetFrameworks>
(请注意,XML 元素末尾添加了 s
)。现在,当您构建类库时,.NET SDK 将在 bin\
中创建两个目录。目录,每个目标框架一个。至少目前看来,net471
目录获取所有dll,类似于非SDK风格的项目。
关于.net - 如何为 .NET Standard 创建 "NuGet Package Management Project"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56592020/
JavaScript Standard Style 翻译: Português, Spanish, 繁體中文, 简体中文 standard 规则列表,太多不必阅读。 了解 standard 的最好方式
我有一个 exec我使用 outputproperty 将其输出放入属性的任务属性。该命令可能会向 stderr 打印一些错误,我不希望将这些错误包含在输出中(因为输出被馈送到另一个命令中),而是要打
标题说明了一切 - 如何将 .NET 标准库标记为符合 CLS? 我用 C# 编写了一个简单的库,目标是 .NET Standard 1.0 框架。它包括两个枚举: public enum Align
我有一个写入错误输出的 PowerShell 脚本。该脚本可以简单如下: Write-Error 'foo' Start-Sleep -s 5 Write-Error 'bar' 我实际调用的脚本产生
对于完整的 .NET 项目,您可以在 Project Properties > Application tab > Assembly Information.. 中勾选一个框以使项目 COM 可见。
我将我的项目 ( https://github.com/MarkKhromov/The-Log) 迁移到 .NET Standard 2.0,但我的应用程序构建已损坏。我该如何解决这个问题? 我的解决
互联网上的许多文章都使用“标准输入/输出/错误流”术语好像每个术语都与使用的“标准输入/输出/错误设备”术语具有相同的含义在其他文章上。例如,很多文章说标准输出流默认是监视器,但可以重定向到文件、打印
我正在尝试从 https://github.com/go-yaml/yaml 导入 go-yaml ,并且我看到了 Google 未提供帮助的错误。 我运行了 go get gopkg.in/yaml
在列出 TimeZoneInfo.GetSystemTimeZones 返回的 TimeZoneInfo 的所有 Id 属性时,出现了两个版本的 EST:美国东部标准时间和东部标准时间。有什么区别?
问题: 如函数的 C 引用页所述,c16rtomb,来自 CPPReference ,在注释部分下: In C11 as published, unlike mbrtoc16, which conve
我想使用 go 语言从我的数据库中检索一些数据。这是我在文件 main.go 中的代码的开头 package main import ( _ "github.com/go-sql-driver
我一直在通过STM32F4发现进行音频项目,我注意到一件事,所有I2S标准仅适用于一个麦克风(取决于标准使用单独的位的哪个边缘)。例如飞利浦(Philips),MSB或LSB标准使用下降沿作为位触发,
有没有标准定义了 语法 和 语义的 汇编语言 ?与语言类似 C 有 ISO 标准和语言 C# 有 ECMA 标准?是只有一种标准,还是有更多标准? 我问是因为我noticed那个汇编语言代码看了不同
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 提供事实和引用来回答它. 1年前关闭。 Improve this
我们正在内部构建API,并且经常传递带有多个值的参数。 他们使用:mysite.com?id=1&id=2&id=3 代替:mysite.com?id=1,2,3 我赞成第二种方法,但我很好奇是否真的
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be
我认为有很多人不知道RFC(征求意见)。我知道它们在逻辑上是什么,但是有人能为新开发人员提供一个很好的描述吗?另外,共享一些有关如何使用和阅读它们的资源也很好。 最佳答案 这个术语来自互联网的前身AR
我找不到 Somaliland 的两个字母的国家/地区缩写,可能是因为它不是一个国家,而是正如维基百科所说:“一个未被承认的 self 宣布的事实上的主权国家,被国际承认为索马里的一个自治区”。尽管如
我正在编写一款蜜 jar 软件,该软件将对其交互进行大量记录,我计划记录纯文本 .log 文件。 我有两个问题,来自不太熟悉服务器日志方式的人。 首先,我该如何分解我的日志文件,我假设运行一个月后我不
我最近负责调试两个不同的程序,这两个程序最终至少需要共享一个 XML 解析脚本。一个是用 PureMVC 编写的,另一个是从头开始构建的。虽然最初从头开始编写是有意义的(它节省了大量内存,但内存问题已
我是一名优秀的程序员,十分优秀!