【问题标题】:Package tab missing from project properties项目属性中缺少包选项卡
【发布时间】:2021-06-04 11:23:04
【问题描述】:

尝试创建 nuget 包以上传到我们自己的 nuget 服务器,并希望消除手动创建和编辑 nugspec 文件的过程。我读过的所有内容都说可以从项目文件中提取设置(如果使用包引用)。并且设置存在于项目属性窗口的“包”选项卡上。但是那个标签不存在。

使用 vs 2019,.NetFramework 4.7.2,项目是一个库,并已迁移到包参考。 我拿了一个现有项目,右键单击引用,并使用迁移选项。包标签不存在

我还将 nuget 包管理器设置为默认为 packageReference,并创建一个新的类库。 包标签也不存在

所需的包(当使用带有包引用的非 SDK 样式时)nuget.build.tasks.pack 已添加到两个项目提及的引用中

任何帮助将不胜感激

【问题讨论】:

    标签: package nuget


    【解决方案1】:

    包选项卡仅适用于 SDK 样式项目。非 SDK 样式项目在 Visual Studio 中使用不同的项目系统,该系统不包含该项目属性选项卡。新项目系统(on github,旧项目系统是闭源的)最初看起来与旧项目系统相同,但慢慢地它们开始出现分歧。解决方案资源管理器中的 Reference/Dependencies 节点就是一个明显的例子,项目属性窗口中的 Package 选项卡也是如此。

    要创建 pack 使用的 MSBuild 属性,您需要手动将项目文件编辑为 XML。在 Visual Studio 中,您需要在解决方案资源管理器中右键单击项目,选择“卸载项目”,现在单击项目或右键单击并选择编辑,您将看到项目 XML。完成后,再次右键单击项目并选择重新加载项目。或者,使用 Visual Studio 之外的文本或 XML 编辑器对其进行编辑,Visual Studio 将检测到更改并在您返回 alt-tab 时提示您重新加载项目。

    不过,我的建议是将您的非 SDK 样式项目转换为 SDK 样式项目。 “标准”类库项目工作正常,我不知道有任何缺点(除非您团队中的一些开发人员仍在使用 Visual Studio 2015 或更早版本),因为非 SDK 样式项目已经在使用 PackageReference。在 SDK 样式项目中以 .NET Framework 为目标时,某些其他项目类型可能具有有限的 Visual Studio 体验。其他项目类型可能根本不兼容 SDK 风格的项目。但是,大多数创建 NuGet 包的人都是使用标准类库项目这样做的,这应该没有任何问题。

    有一个“不受支持”的工具 try-convert 可以将非 SDK 样式的项目转换为 SDK 样式。就个人而言,我只是删除 csproj,创建一个空目录,在控制台上运行 dotnet new classlib,将 csproj 移动到我现有项目的目录,重命名项目文件,然后删除那个临时/空目录。如果您的项目中除了 .cs 文件之外还有其他需要在 csproj 中显式条目的文件,如果您对 msbuild 感到满意,请手动编辑 csproj,否则在 Visual Studio 中加载项目并使用解决方案资源管理器和属性窗口。

    有些人认为 SDK 风格的项目仅适用于 .NET Core 或 .NET Standard。这不是真的,但不幸的是,Visual Studio 新项目模板给人留下了这样的印象。您将需要创建面向 .NET 5、.NET Standard 或 .NET Core 的类库项目。但是一旦创建了 csproj,编辑 csproj(对于 SDK 样式项目,不再需要卸载项目)并将 <TargetFramework>net5.0</TargetFramework> 更改为 <TargetFramework>net472</TargetFramework>。 SDK 风格项目的另一个优点是它很容易实现多目标,这是一种将项目慢慢现代化到更新的运行时的有用技术。在 XML 元素名称中添加 s 以使其成为复数,并将额外的目标框架添加为以分号分隔的列表 <TargetFrameworks>net472;net5.0</TargetFrameworks>。在TargetFrameworkTargetFrameworks 之间切换时,Visual Studio 应该会提示您重新加载项目,但我发现它仍然存在一些问题。所以我建议关闭解决方案并再次打开它,然后一切都会很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多