2015-09-09 26 views
11

我正在使用Visual Studio 2015处理C#项目,并使用NuGet进行包管理。对于一个参考,我想临时使用本地构建,而我正在迭代修补程序,而不是发布的版本。什么是实现这一目标的最佳方式?如何使用本地构建临时替换NuGet引用

如果我使用的是外部SVN,我会将新建的本地拷贝放到外部引用的文件夹中并进行设置。其他软件包管理软件(如CocoaPods)将允许我指向本地目录来解析引用。有了NuGet,它看起来没有任何机制。

当我尝试将我的新DLL放在packages文件夹内的软件包引用上时,在Visual Studio中出现不一致的行为。我的版本会失败,出现数百个错误,其中大部分错误很快就会从错误列表中消失。我最终留下警告,告诉我它无法解析我想要替换的程序集的引用(尽管引用的属性确实表明它正在查找我的新版本)。

+0

这听起来像是一个[XY-问题】(http://meta.stackexchange.com/questions/66377/what-is-the-xy - 问题) - 为什么你想实现这一目标? –

+0

我试图在我的应用程序中测试未完成的库代码,它会消耗它。由于尚未完成,因此我尚未准备好提交并发布我的更改。 – Dov

+0

你知道,在SemVer之后,有一个本地存储库可以部分解决你的问题......提交beta-packages有什么问题?尽管如此,我的确了解了额外的开销(我也面临着......) –

回答

4

您可以创建自己的NuGet饲料(简单的本地文件夹+某些配置)

在这里阅读更多Hosting Your Own NuGet Feeds

+1

有没有办法切换到本地文件夹软件包源,而不是从旧的卸载,然后重新安装?这并非如此简单,因为我正在研究的解决方案中有20个项目,其中只有5个使用该库。这不是不可逾越的,但烦人的。 – Dov

7

我发现下面的解决方法有用我:

首先,我禁用“NuGet包恢复“解决方案的上下文菜单中。

之后,我去包文件夹,并搜索我想要替换的包。从这个包我拿到版本号,并使用这个确切的版本号建立我想交换的DLL。

之后,我可以与这个新建立的dll交换包文件夹中的dll。建立该项目现在使用这个新的DLL。

建立一次之后,我可以轻松构建新的dll,并将它们复制到packages文件夹中。

+2

禁用“NuGet软件包恢复”不是必需的 –

+0

这是一个伟大的,没有大惊小怪的解决方案。为我工作! – Dan

+0

我尝试这样做时出现错误 - “Assembly {程序集路径}必须经过严格签名才能被标记为先决条件。” –