繁体   English   中英

如何在Visual Studio中使用外接程序库F5部署?

[英]How to F5 deploy with add-in libraries in Visual Studio?

我维护一个应用程序,其中包含一些依赖它的项目引用。 此外,在同一解决方案中有一些“附加”项目不需要编译应用程序,而是在运行时加载的。 但是,“附加”项目对于应用程序完成其工作至关重要。 也就是说,它们是强制性加载项。

我的团队将始终能够使用Visual Studio启动应用程序,并根据需要进行增量构建,并将加载项库部署到应用程序中。

外接程序项目不与应用程序项目共享其输出目录,因为外接程序项目是AnyCPU,而应用程序是针对x86和x64平台构建的。

我很犹豫,只是将P2P引用添加到加载项项目中。 没有P2P引用不仅是传达这些项目的附加特性的一种好方法,而且还有助于IntelliSense变得不知所措。

我尝试将ReferenceOutputAssembly设置为false使用P2P引用 ,但这似乎不支持Visual Studio内部的增量构建。

那么,在上述现实世界中存在的约束条件下,我如何才能提供令人满意的F5体验?

ReferenceOutputAssembly设置为false的情况下使用P2P引用,但请考虑以下陷阱:

  • 由于Visual Studio 2017 15.4.2和更早版本现在已具备所有功能,因此快速更新检查不支持此功能。 因此,通过在应用程序项目中将DisableFastUpToDateCheck属性设置为true来禁用检查,如docs所述 这可能会大大增加构建时间。
  • 如果应用程序和引用的项目的输出目录一致,则不要在项目引用中指定CopyToOutputDirectory元数据。 否则,这会阻碍Rebuild目标。

那么,在上述现实世界中存在的约束条件下,我如何才能提供令人满意的F5体验?

如果我理解您的正确,恐怕您输入了一个误解。 ReferenceOutputAssembly设置为false使用P2P引用,Visual Studio / MSBuild不会将该引用库复制到引用项目的输出,但是仍将编译引用的项目。

如果您不想在同一解决方案中编译那些“加载项”项目,而是在运行时加载它们,则可以直接引用那些“加载项”项目的.dll文件。 或者,您可以使用NuGet打包库程序集。 然后,您可以在Visual Studio中使用NuGet来处理所有这些引用。 在这种情况下,“加载项”项目不会编译,而是在运行时加载。

如果只不想将那些“附加”项目库复制到参考项目的输出目录中,则可以将这些引用的属性“ Copy Local ”设置为false。

更新评论:

我想在同一解决方案中开发“附加”项目。 您反对此工作流程吗?

简单的答案是。 如果在同一解决方案中开发“外接程序”项目,则在引用的项目中进行任何修改时,将重新编译引用的项目,这将破坏以前的部署。 因此,我建议您不要在同一解决方案中开发“外接程序”项目,而可以将其移至新解决方案。 如果仍要在同一解决方案中开发这些项目,则可以参考我以前的建议“将Nuts与Library组件打包在一起。然后可以在Visual Studio中使用NuGet来处理所有这些引用。” 在这种情况下,开发外接程序项目时,先前的部署不会被破坏。

希望这可以帮助。

只需在各处使用P2P引用即可使其工作。 也就是说,相对于未直接引用“附加”项目的外观,更喜欢可工作的构建系统。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM