我有一个ASP.NET Web应用程序,由多个ASP.NET项目(以及多个类库)组成。显然,其中一个项目是根项目,而其余的是子项目(这种应用程序结构的详细概念在这里解释)。每个子/子项目都有自己的目录,并且它们都位于名为“模块”的目录下的根文件夹中。由于IIS只能处理一个应用程序的一个项目,所有子项目将被视为常规目录(在运行时)。因此,我修改了每个子项目的生成输出路径为“
.. \ .. \ bin \ ”,即根bin文件夹。这样,我就可以正确地设置所有内容。从Visual Studio的角度来看,我可以在一个解决方案下拥有不同的项目。而从IIS的角度来看,我有一个项目,其中包含一个bin文件夹和一个Web.Config文件。现在问题来了:如果我发布根项目(右键单击项目节点->发布),那么发布的输出将仅为该项目,不带“模块”文件夹。结果bin文件夹也将缺少子项目的输出DLL。这是可以预料的。因此,我认为解决这个问题的明显方法是发布我的所有Web项目(不仅仅是根项目),并牢记我的子项目发布路径需要是根项目的发布路径中的“模块”文件夹。所有这些都很好,除了一个重要问题。事实证明,每个已发布的子项目都有自己的bin文件夹,因此根bin文件夹不包含子项目的输出DLL。因此,我想到了一个解决方案:虽然Visual Studio允许我按照自己的方式指定每个项目的输出路径(正如我所提到的,我将其设置为“ .. \ .. \ bin \ ”),但ClickOnce发布并不尊重这一点,而只是为每个子项目创建一个bin文件夹。有没有办法指定ClickOnce发布过程的输出路径(bin文件夹)?如果没有,那么有什么替代方案吗?