2012-02-14 49 views
0

通常,visual studio將輸出文件放入bin/debug或bin/release。將輸出文件重定向到指定文件夾的Visual Studio擴展

當解決方案包含大量項目時,不容易手動修改每個項目輸出。

而且在編輯文件的csproj不理想的,因爲他們中的一些是解決方案之間的共享..

我的問題:是否有人知道一個工具,它可以快速配置輸出路徑?

UPDATE:通過TFS解決我的問題建立

回答

1

想必你在那是唯一的解決方案是每個解決方案至少有一個項目。在後生成事件中,將每個項目輸出的內容複製到所需的位置。

我們經常爲此使用批處理文件。這很簡單但很有效。在我們的解決方案中獨特的項目中,我們創建了一個Release.bat文件。這包含許多文件副本,以從其他項目的各個輸出目錄中複製所有必需的組件。然後,您可以在後期構建事件中運行該批處理文件。解決方案建立時,我們通常會將所有內容複製到「最新版本」fodler。如果這變成了正確的版本,我們會將Latest Release文件夾重命名爲實際版本號。

如果您有多個構建配置,或者甚至僅使用調試和發佈配置,則可以使用Post-Build事件中的If語句來決定要運行哪個批處理文件。所以你可以創建一個Debug.bat,Release.bat等來執行你所需要的。開始時設置它們並使它們正常工作可能非常繁瑣,但一旦完全實施,它們就非常有用。

轉到解決方案資源管理和卸載通過右鍵單擊一個項目,然後選擇卸載項目:

+0

謝謝,託比。這正是我們需要的! – devi 2012-02-15 10:19:02

2

使用的MSBuild特性,這如果你遵循這些步驟,你可以做自定義您的項目。

然後再次右鍵單擊卸載的項目並選擇編輯項目。這將打開項目的XML定義,並且您將具有智能感知佈局,這將幫助您執行後續步驟。

在Visual Studio編輯找到的第一個的PropertyGroup標籤和添加接近或處於閉合的PropertyGroup標記的末尾這些行:

<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> 
<BuildDirectory Condition="$(BuildDirectory) =='' or $(BuildDirectory) == '*Undefined*'">$(SolutionDir)\build\</BuildDirectory> 

上面SolutionDir中的msbuild屬性,您可以得到使用此被定義回答:msbuild script using solution information,也檢查了衆所周知的MSBuild特性here

下一步是要找到每個配置的OutputPath標籤並編輯這樣說:

<OutputPath>$(BuildDirectory)\x86\AutomatedDebug\</OutputPath> 

上面的示例假定您的目標平臺x86具有名爲AutomatedDebug的配置。

輸出將是爲每個項目

x:\projects\whereever-your-solution-is\build\x86\AutomatedDebug\ 

重複。

要卸載多個項目,請在解決方案資源管理器中摺疊所有項目並移動單擊或Ctrl點擊以選擇全部或部分項目,然後右鍵單擊選定的組以卸載,但不幸的是,您無法進行編輯至少在視覺工作室2010.

我是第一個承認,這對現有項目來說有點麻煩,但你可以很容易地創建一個視覺工作室項目模板,這些設置已更改,以便新項目將使用更多方便的默認輸出目錄。

由於項目屬性編輯器會轉義任何$()封閉的文本,因此無法直接在visual studio中編輯輸出目錄。

另外,您只能使用$()中所包含的系統環境變量的名稱修改OutputPath。最後一個選項是啓用全局輸出目錄。

如果建立在直接使用的MSBuild在命令行輸出目錄這種方式修改的任何一個項目,你的MSBuild運行將創建以上從一個目錄

..\build\x86\AutomatedDebug 

如果你是在一個團隊中,你應該警告他們不要直接手動編輯輸出目錄,因爲此操作將覆蓋任何定製。

希望這個信息很有用。 問候。