问题描述
我创建了一个仅包含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库)