添加依赖于.NET Analyzer项目

时间:2018-02-21 08:08:51

标签: c# .net nuget roslyn

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

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

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

1 个答案:

答案 0 :(得分:1)

在使用new .csproj format的Visual Studio 2017中,NuGet依赖项会根据.csproj文件的PackageReference自动复制到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 <projectName>.csproj
  2. 通过NuGet Package Manager安装NuGet包
  3. 通过更新.nupkg文件

    来更改依赖关系

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

    1. 使用标准zip实用程序将其解压缩到临时目录
    2. 在临时目录中,修改其.nuspec文件的内容,并根据需要添加其他依赖项
    3. 再次压缩临时目录的内容
    4. 重命名新的.zip文件,并为其指定扩展名.nupkg