.net 管理一个VS扩展对另一个VS扩展的依赖关系
我已经为内部使用编写了一个VS2012扩展,它简化了从当前加载的解决方案中包含的NUSPEC发布和更新任何nuget包的过程 为此,我引用了官方软件包源中的Nuget.Core,在官方Nuget扩展上添加了扩展级别依赖项,然后将我对Nuget.Core程序集的本地引用标记为不包含在VSIX中 直到昨天nuget被更新之前,这一切都很好——现在我的扩展根本无法工作,因为它无法加载此核心程序集的旧版本(版本号总是更改) 我刚刚尝试从nuget获得新版本,但尚未发布 因此,我面临着两个选择:.net 管理一个VS扩展对另一个VS扩展的依赖关系,.net,visual-studio-2012,nuget,vsix,.net,Visual Studio 2012,Nuget,Vsix,我已经为内部使用编写了一个VS2012扩展,它简化了从当前加载的解决方案中包含的NUSPEC发布和更新任何nuget包的过程 为此,我引用了官方软件包源中的Nuget.Core,在官方Nuget扩展上添加了扩展级别依赖项,然后将我对Nuget.Core程序集的本地引用标记为不包含在VSIX中 直到昨天nuget被更新之前,这一切都很好——现在我的扩展根本无法工作,因为它无法加载此核心程序集的旧版本(版本号总是更改) 我刚刚尝试从nuget获得新版本,但尚未发布 因此,我面临着两个选择: 再次释
- 再次释放扩展,绑定重定向到新版本
- 从nuget扩展的安装位置引用DLL
有人给我其他选择吗 由于您的扩展确实依赖于Nuget,我想每次发布新版本的扩展都是最好的选择 关于VS扩展性本身,据我所知,有一种方法可以使用ServiceProvider在扩展之间进行通信。您可以共享您的服务,也可以获得共享的服务。因此,如果Nuget提供任何服务,您可以尝试通过它们使用它
请查看文档以了解作为分层点的。您需要分发您的软件及其开发所依据的依赖项的精确版本。不能期望用户拥有它们 好了,这是正常的。为什么它会打破任何东西?试试看。-他在Nuget产品的各个部门工作 正如您从那里的响应链中看到的,解决方案是而不是直接引用Nuget.Core,因为它不受支持。Nuget提供了一些服务提供商来完成一些Nuget操作,但不是我想要的东西 因此,我最终遵循了他的建议——从codeplex获取Nuget源代码,并构建程序集的本地副本(具有不同的标识,因此不会干扰nugget扩展) 如果在Nuget中添加了新的包特性,我必须保持更新,但是如果扩展被更新,它将继续工作
另一个选项是将本地Nuget.Core合并到扩展中;但是,这是一个WPF程序集,它们不能合并。我本可以创建一个标准的附属程序集,然后将Nuget.Core合并到其中。这里的问题是当另一个扩展被更新时,从而部署我的代码所依赖的DLL的更新版本(关键是使用不同的程序集版本)。这会破坏我的扩展,因为它是针对较低版本构建的-抛出.Net运行时加载错误。我不能限制我的团队在Nuget发布时不更新它。-但同样地,我不能分发核心DLL,因为当他们更新它时,它会破坏Nuget扩展。计算机不能同时保存任何库的多个版本吗?然后可以显式引用所需的精确版本。