c# - 缺少程序集参考 - 确保 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
.
如果您每次构建包时不增加包的版本号并想在项目中试用它,则它不会看到更新。
使用 .增加版本或清除本地 NuGet 包缓存dotnet nuget locals clear all
。
如果 DLL 仍未被引用(检查 VS 在解决方案资源管理器中显示的依赖项节点),那么您的包可能未在预期位置包含 DLL(例如lib\netstandard2.0
,如果您的源项目是 .NET Standard 2.0 库的文件夹)
推荐阅读
- linux - 如何调整 /dev/shm 的大小?
- mysql - 带有内部连接的mysql查询中的if语句
- emacs - 是否可以让 emacs verilog-auto 连接在 AUTO_TEMPLATE 中模板化的电线
- applescript - 选择安全和隐私中的项目
- c++ - 如何在 C++ 中更改 LPCTSTR 对象?
- c# - 模拟单元测试的 ScrapySharp 响应
- javascript - 如何在 amp 中使用 IFrame 播放器 API?
- python-3.x - macOS Catalina python 通过启动访问拒绝下载文件夹
- python - 可将屏蔽视图写入记录数组
- cmake - CMake execute_process 为空 OUTPUT_VARIABLE