【问题标题】:Add dependency to .NET Analyzer project将依赖项添加到 .NET Analyzer 项目
【发布时间】:2018-02-21 08:08:50
【问题描述】:

我在 Visual Studio 2017 中创建了一个带有代码修复(.NET 标准)的分析器类型的 .NET 项目。由此项目类型创建的分析器可以部署为 NuGet 包或 VSIX 扩展。我在项目属性中使用了Generate NuGet Package on Build 设置,它工作得非常顺利,没有任何问题。

问题是,现在我想向创建的 NuGet 包添加一些依赖项。我知道这可以通过 .nuspec 文件用于其他情况。但是在这种项目类型中,VS 在 bin 文件夹中创建了 NuGet 包,并且没有任何 .nuspec 文件。

那么如何在上面的场景中为创建的NuGet包添加依赖呢?

【问题讨论】:

  • 没有任何 .nuspec 文件 - 是的,它在文件内部。 NuGet 文件是具有不同扩展名的 .zip 文件。因此,您可以将其解压缩,更改 .nuspec 文件,然后再次压缩。
  • @NightOwl888 我将包的扩展名从 .nupkg 更改为 .zip,解压缩,更改 .nuspec 文件以添加依赖项,再次压缩并将文件的扩展名更改回 .nupkg 但是这并没有改变任何东西!
  • 我使用了 NuGet 包选项 - 你能澄清一下你的意思吗?您可以通过在项目属性中将其设置为“在构建时生成 NuGet 包”直接在 VS 2017 项目中创建 NuGet 包,也可以使用dotnet packnuget pack 创建它。你用的是哪个?
  • @NightOwl888 我用第一个,直接在VS 2017中

标签: c# .net nuget roslyn


【解决方案1】:

在使用 new .csproj format 的 Visual Studio 2017 中,NuGet 依赖项会根据 .csproj 文件的 PackageReferences 自动复制到 NuGet 包中。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard1.3;net45</TargetFrameworks>
    <DefineConstants Condition=" '$(TargetFramework)' == 'netstandard1.3' ">$(DefineConstants);LIBLOG_PORTABLE</DefineConstants>
  </PropertyGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.3' ">

    <!-- /* Package references for .NET Standard 1.3 */ -->
    <PackageReference Include="Microsoft.CSharp" Version="4.4.0" />
    <PackageReference Include="System.IO.MemoryMappedFiles" Version="4.3.0" />
    <PackageReference Include="System.Resources.ResourceManager" Version="4.3.0" />
    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.4.0" />
    <PackageReference Include="System.Runtime" Version="4.3.0" />
    <PackageReference Include="System.Threading.Thread" Version="4.3.0" />
  </ItemGroup>

</Project>

因此,您唯一需要做的就是将这些依赖项从 NuGet 添加到您的项目中。这可以通过

  1. 手动编辑项目文件(在解决方案资源管理器中右键单击项目并选择Edit &lt;projectName&gt;.csproj
  2. 通过 NuGet 包管理器安装 NuGet 包

通过更新 .nupkg 文件更改依赖关系

另外,由于 .nupkg 文件只是具有不同扩展名的 .zip 文件,您可以更改其内容:

  1. 使用标准 zip 实用程序将其解压缩到临时目录
  2. 在临时目录下,修改其.nuspec文件的内容,酌情添加额外的依赖项
  3. 再次压缩临时目录的内容
  4. 重命名新的.zip 文件,将其扩展名为.nupkg

【讨论】:

  • 实际上,您的第一种方法(解压缩、更改 .nuspec 等)对我有用,您能否将其发布为答案?
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多