如何部署在其输出中包含文件夹的WinForms引用程序集

本文关键字:文件夹 包含 WinForms 程序集 引用 输出 何部署 部署 | 更新日期: 2023-09-27 18:10:52

我有一个Winforms项目a,它引用了一个类库汇编B.汇编B有文件夹,其中包含设置为构建操作= None复制到输出目录= True的文件。这些文件夹和文件正确地输出到程序集b的bin文件夹。它们不是引用文件,只是我需要在运行时从部署位置加载的文件。

运行项目A时,程序集B中的代码需要访问所描述的文件夹和文件。 AppDomain.CurrentDomain。BaseDirectory将给我项目A的运行位置,但是该位置不存在文件夹和文件。我如何定位这些文件在c#代码从汇编B?

汇编B被编译成各种解决方案类型(winforms, web服务等),所以我需要一个可以在所有场景下工作的部署。

我希望这是有意义的!我想我正在寻找a)改变部署的方式,以便文件夹和文件也在运行目录中,或者b)更改汇编b中的代码。

我将感激任何帮助!

如何部署在其输出中包含文件夹的WinForms引用程序集

如果程序集B将在应用程序外部发布和使用,我建议将文件夹设置为嵌入资源,而不是磁盘上的外部文件夹。当然,这需要在应用程序中使用这些文件的任何地方更改代码,以便从ResourceStreams而不是磁盘上的文件中获取它们。

如果文件夹只是应用程序运行时需要访问的数据,那么最简单的解决方案是将两个项目构建到一个公共输出目录。设置输出目录,例如

   bin'Debug

   ..'bin'Debug

这样,A和B的输出,包括文件夹,将在同一个目录中(如果项目正常在解决方案目录下的文件夹中)。这也可以帮助加快构建速度。

您可以通过项目属性添加构建后事件。在这种情况下,您可以运行命令将程序集和文件夹及其内容复制到适当的位置。

在你的代码中,如果你需要加载程序集的位置,那么你可以使用assembly . getexecutingassembly ().CodeBase