缺少程序集参考-确保VS为我的nuget程序包创建一个.config文件

问题描述

我创建了一个仅包含1个.dll的nuget程序包。

要测试.nupkg的安装,我

  • 在VS中创建C#控制台应用程序
  • 添加指向我的软件包目录的本地供稿
  • 从那里安装我的软件包
  • 开始输入main ...

问题是,如果我这样做:

using System;
using MyNamespace;

namespace tester
{
    class Program
    {
        static void Main(string[] args)
        {
            MyClass.MyStaticmethod()

            Console.WriteLine("Hello World!");
        }
    }
}

MyClass.MyStaticmethod()说我缺少程序集引用,而using MyNamespace;是不必要的声明。

环顾四周,这似乎是因为我的nuget软件包安装到了全局软件包位置:%Current_User%.nuget。\ packages,而.csproj文件包括

  <ItemGroup>
    <packagereference Include="MyPackage" Version="1.0.0" />
  </ItemGroup>

有没有办法确保我的软件包的所有使用者都创建一个packages.config文件,而不是将我的软件包安装到全局软件包位置?

我可以在.nuspec文件中的某个位置进行指定吗?

解决方法

packages.config方法基本上是引用NuGet软件包的经典方法(读为“旧”方法),此后已被PackageReference引用软件包的方法所取代。您应该确保您的软件包与PackageReference兼容。

如果您每次构建软件包时都没有增加软件包的版本号,并希望在项目中进行尝试,则它将看不到更新。

要么增加版本,要么使用dotnet nuget locals clear all清除本地NuGet软件包缓存。

如果仍未引用该DLL(检查VS在解决方案资源管理器中向您显示的依赖项节点),则您的包可能未在预期位置包含DLL(例如,如果您的源项目是lib\netstandard2.0文件夹是.NET Standard 2.0库)