10

免責聲明:我知道我可以保留文件夾權限,如果我選中「在目標上留下額外的文件」複選框但我不想那麼做我可以在一鍵式網頁發佈過程中保留文件夾權限嗎?

也就是說,有什麼辦法讓Visual Studio 2010中的一鍵式Web發佈保留遠程服務器上文件夾的權限?

具體而言,我希望應用程序池帳戶具有對App_Data文件夾的修改權限,但在發佈過程中權限始終得到重置。

回答

13

默認情況下,我們將調用App_Data文件夾上的Web Deploy SetAcl提供程序,此行爲由MSBuild屬性IncludeSetAclProviderOnDestination控制。此屬性的默認值在%ProgramFiles32%\ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets中爲true。如果你想防止SetAcl提供者被調用,你可以在發佈時將這個屬性設置爲false。爲了做到這一點,請按照以下步驟操作。

  1. 在爲您的項目中創建名爲{}項目名.wpp.targets(其中{}項目名是您的Web應用程序項目的名稱)
  2. 文件相同的目錄裏面的文件粘貼MSBuild內容低於此列表
  3. 在Visual Studio中重新加載項目(VS將項目文件緩存在內存中,因此需要清除此緩存)。

{}項目名.wpp.targets

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <IncludeSetAclProviderOnDestination>false</IncludeSetAclProviderOnDestination> 
    </PropertyGroup>  
</Project> 

在這個文件中,你可以看到,我宣佈財產並設置它的值設置爲False的。擁有此文件後,它將自動由我們的發佈流程(來自Visual Studio)以及命令行中的任何發佈操作獲取。

你可以試試看,讓我知道如果你有進一步的問題?

+0

釘住它。謝謝你,先生。現在,有一個後續問題。爲了做到這一點,我必須在App_Data中放置一個虛擬佔位符文件,因爲它最初沒有文件。 (我正在使用它作爲我正在使用的第三方庫的運行時緩存位置。)我不認爲我可以「取消選中」保留額外的文件...但不知何故告訴它明確不刪除App_Data? – Lobstrosity

+1

我想你將不得不保留在那裏的虛擬文件現在:(對不起。 –

+0

已記錄。感謝您的幫助。 – Lobstrosity

相關問題