2014-03-26 82 views
1

我目前的狀況:Visual Studio 2013解決方案文件夾在哪裏?

我曾在我分裂一個大的MVC項目分成兩個較小的項目的解決方案。當然,這兩個較小的項目引用了舊版大型項目中的相同JavaScript和內容文件。

我希望做什麼:

,而不是複製在2個項目中的腳本和內容,我想創建一個共享文件夾,該2項目是指使用類似的鏈接或快捷方式。

如何,我試圖來解決這個問題:

我認爲,解決文件夾是解決我的問題。所以我想創建一個解決方案文件夾,我將移動我的所有腳本和內容文件。

但是,我的問題是,我必須將文件逐個文件移動到此文件夾,因爲我們不能簡單地添加現有的文件夾(我將腳本和內容文件夾移到解決方案目錄本身而不是在特定項目中)。這很枯燥。

這裏是我試圖做的:

  1. 首先,我試圖找到其中創建解決方案的文件夾。但是,我發現解決方案文件夾實際上並不存在。我認爲它們只是您的解決方案的某種邏輯結構。無論何時將文件添加到解決方案文件夾,都會將其添加到解決方案目錄中。
  2. 我認爲解決方案文件(.sln)可能包含某種xml格式的解決方案文件夾及其內容的配置。但是,這似乎並非如此。
  3. 我打開解決方案的SQL Server Compact Edition文件(.sdf),它可能存在描述解決方案文件夾的數據庫表。但是,這似乎也並非如此。

所以,最後,我的問題是:

有沒有簡單的方法,以避免添加文件逐一添加現有的文件夾作爲一個解決方案文件夾(我有太多的文件) 。

更新:

感謝您的答案和建議。我最終採取了一種不同的方法。我使用了預編譯命令:XCOPY "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E我這樣做是因爲建議的解決方案和我以前的嘗試是將鏈接/快捷方式添加到外部資源文件。雖然這很好,並且實際上已將快捷方式添加到項目中,但是當我測試MVC項目時,IIS沒有設法加載資源文件,因爲它查找物理文件(當然)。

因此,我現在的查詢是:是否有一些方法,無論是生成事件還是和csproj文件中的配置,以「Include In Project」新近「物理」複製的文件?

回答

0

我對問題的最終解決方案是解決方案建議的答案和我決定採取的方法的組合,以便本地 IIS可以看到文件。

添加以下部分到的csproj文件:

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

我還增加了以下命令在我的項目一個預生成事件:XCOPY /y "$(SolutionDir)Files\*.*" "$(ProjectDir)" /E

0

據我所知,Visual Studio不通過他們的界面提供此功能。意圖可能是項目文件存在於項目文件夾中,而不是單獨存在。它通常使得項目更容易工作(移動,共享等)。

也就是說,您不必每個實際文件夾在實際包含在該項目中的項目位置。所以,你可以不喜歡以下文件夾結構:

+ /Projects (contains ProjectA.csproj and ProjectB.csproj) 
    | 
    +-- /ProjectA (folder with files that are just for "ProjectA" 
    | 
    +-- /ProjectB (folder with files just for "ProjectB") 
    | 
    +-- /Shared (Folder with your shared scripts/files) 

通過這樣的結構,你應該能夠使用「顯示所有文件」按鈕,包括在兩個項目中的共享文件夾。您可能需要手動編輯csproj文件以映射到這個新結構,但它不應太難。

我能想到的唯一的其他選擇是嘗試手動編輯csproj文件,例如this question shows

希望一切都有所幫助。祝你好運!

1

正如德魯建議:編輯項目文件是一種方法。另一種方法是使用類似於csproj文件的機制來編輯解決方案文件。 在解決方案文件中,具有特定GUID的項目包含一組文件夾的詳細信息。

編寫一個小應用程序,它將讀取您的文件夾並輸出所需輸出的小文本。生成新的Guids直到文件被創建。只需將其粘貼到.sln文件的頂部即可。 2150E333-8FDC-42A3-9474-1A3956D46DE8似乎是用於解決方案項目的GUID。

此示例有一些嵌套結構中的內容的子文件夾。 即

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder1", "NewFolder1", "{4CDFCC66-45BD-4B6D-8758-FEF7E9F61C1C}" 
EndProject 
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder1", "SubFolder1", "{771BDBFB-5C01-4C51-A170-D88ECA8DE896}" 
EndProject 
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubFolder2", "SubFolder2", "{5D23AB90-5EF6-4611-A575-34F7B50BB1B6}" 
EndProject 
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NewFolder2", "NewFolder2", "{135E9F67-2DF8-4458-AC6D-FF82FC1B3BC6}" 
EndProject 
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SubSubFolder1", "SubSubFolder1", "{B41C7BAA-7E3D-405B-96AB-005120D12D26}" 
ProjectSection(SolutionItems) = preProject 
    NewFolder1\SubFolder1\SubSubFolder1\a.txt = NewFolder1\SubFolder1\SubSubFolder1\a.txt 
EndProjectSection 

EndProject

1

解決方案的文件夾(在文件系統)是可選的,在Visual Studio中他們通常只是用來Visual Studio中組織文件。

這是一種手動方法,可以在與解決方案相同的級別創建「物理」文件夾,但這會降低複雜性。

下面是移動一個腳本文件的步驟:

在文件系統

  1. 創建一個解決方案文件夾(通常在頂級目錄)
  2. 腳本複製文件從(一)項目解決方案文件夾

在Visual Studio

  1. 創建一個解決方案文件夾
  2. 右鍵單擊解決方案文件夾,選擇添加>現有項目...從文件系統上的新的解決方案文件夾
  3. 選擇腳本文件,然後單擊添加
  4. 排除/從PROJECT1
  5. 右擊Project,選擇添加>現有項目刪除腳本文件...
  6. 選擇腳本文件從文件系統解決方案的文件夾,選擇「添加鏈接」從下拉添加按鈕
  7. 重複步驟6-8的所有其他項目

通過使用「添加爲鏈接」我們所做的主要工作是在解決方案文件夾中添加引用的腳本,而不是將實際文件複製到項目文件夾

請注意,您不限於一次處理一個文件,它只是更容易跟蹤。

1

我知道的最快的方式找到在您的解決方案文件夾位於:

  1. 在Visual Studio中,打開「解決方案資源管理,如果它尚未打開查看 - >其他窗口 - >解決方案資源管理器(CTRL + ALT + L)

  2. 內的溶液exploerer,右鍵單擊您的項目或解決方案

  3. 選擇添加 - >新建項目

  4. 彈出讓你選擇一個新的文件模板,但你正在尋找的是在底部的「位置」字段的窗口。它應該有解決方案文件夾的路徑。可以肯定的是,您的解決方案文件夾位於此位置或幾個級別。您可以點擊取消退出嚮導。

+0

+1對於解決方案或項目文件沒有編輯。 – atakanozgun

相關問題