簡體   English   中英

使用多個項目發布Web應用程序

[英]Publish Web Application with Multiple Projects

我有一個ASP.NET Web應用程序,它包含多個ASP.NET項目(除了多個類庫)。 顯然,其中一個項目是根項目,而其余項目是子項目( 此處解釋了此應用程序結構的詳細概念)。 每個子/子項目都有自己的目錄,它們都位於根文件夾下名為“Modules”的目錄中。 由於IIS可以處理每個應用程序的一個項目,因此所有子項目都將被視為常規目錄(運行時)。 因此,我將每個子項目的構建輸出路徑修改為“ ..\\..\\bin\\ ”,這是根bin文件夾。 這樣,我就可以正確設置所有內容。 從Visual Studio的角度來看,我可以在一個解決方案下擁有不同的項目。 從IIS的角度來看,我有一個帶有一個 bin文件夾和一個 Web.Config文件的項目。 現在它發布了。 如果我發布根項目(通過右鍵單擊項目節點 - >發布),則發布的輸出將只是沒有“Modules”文件夾的項目。 生成的bin文件夾也將錯過子項目輸出dll。 這是預期的。 所以我認為解決這個問題的顯而易見的方法是發布我的所有Web項目(不僅是根目錄),記住我的子項目發布路徑需要是根項目的發布路徑中的“Modules”文件夾。 除了一個基本問題外,所有這些都很有效。 事實證明,每個已發布的子項目都有自己的bin文件夾,因此根bin文件夾包含子項目的輸出DLL。 所以我想,雖然Visual Studio允許我按照我想要的方式指定每個項目的輸出路徑(正如我提到的那樣我將其設置為“ ..\\..\\bin\\ ”),ClickOnce發布不尊重它並且只是創建每個子項目的bin文件夾。 有沒有辦法指定ClickOnce發布過程的輸出路徑(bin文件夾)? 如果沒有,那么替代解決方案是什么?

正如你所說,你有多個projects ,一個是根項目。 因此,每個項目都應該有自己的bin文件夾,因為它是一個project而不是root projectsub folder

如果sub project沒有bin文件夾,它將如何知道從哪里加載該project中使用的assemblies

這是不是一個壞主意,有bin文件夾的每個子project

這里提供的答案可能會解決您的問題。 通過將以下屬性添加到.csproj文件(從鏈接的答案中修改),您可以通知ClickOnce在輸出目錄中包含其他內容:

<ItemGroup>
    <Content Include="bin\**\*.*" />
</ItemGroup>

這里給出的另一個答案提供了一種方法,可以遞歸地將其他內容包含在項目文件夾之外的項目輸出中,這可能適用於此處; 從根項目的角度來看,另一個項目是在它的文件夾之外。 但是,我不確定ClickOnce是否會忽略這一點。

<Content Include="..\..\MyContentFiles\**">
    <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM