【发布时间】:2014-11-10 00:52:41
【问题描述】:
我在使用 NuGet 预发布包时遇到问题,想知道其他人在这种情况下做了什么。 NuGet 功能似乎与 Maven 中的预期行为完全不同,坦率地说,很奇怪。举个简单的例子,假设我们有程序集 FooAssembly 和 BarAssembly,其类定义如下:
富:
namespace Foo {
class FooClass {
public void TestA(){
}
}
}
酒吧:
namespace Bar {
class BarClass {
public static void Main(string[] args){
FooClass foo = new FooClass();
foo.TestA();
}
}
}
当我构建 Foo 时,它的版本会生成 Foo-1.0.0-SNAPSHOT.nupkg。当我将它添加为依赖项时,NuGet 会将其安装到 Bar 中,并将其放置在 %APPDATA% 下的本地缓存和源代码树中的包文件夹中。现在,如果我将方法 TestB() 添加到 Foo 并重建,它还会生成 Foo-1.0.0-SNAPSHOT.nupkg。我的构建按预期将这个新的 nupkg 文件放入我的 %APPDATA% 缓存中。但是,当我尝试重建 Bar 时,NuGet 没有检测到我在 %APPDATA% 中的 nupkg 已更改,因此没有可用的新 TestB 方法。我必须手动删除 src/packages 文件夹(或者至少是包中的 Foo 子目录)才能从我的缓存中重新获取包。
在 Maven 中,如果我要重建 Foo 并添加了 TestB 方法,它会将 Foo-1.0.0-SNAPSHOT 放在我的 .m2 缓存中,并且 Bar 将链接到新版本的 jar 并知道 TestB .
我的问题是,首先,我是否缺少 NuGet 的某些内容?其次,如果我不是,人们做了什么来解决这个缺点?添加 MSBuild 预构建步骤以清除项目包缓存?将内部版本号附加到 SNAPSHOT 的末尾(例如 SNAPSHOT42...这似乎对于项目中的多个开发人员来说会出现问题)?
感谢任何见解。谢谢。
【问题讨论】:
标签: c# visual-studio maven nuget