2010-01-14 24 views
2

我有一個大型項目,我正在用更好的開源替代品取代2個部分。開源的庫很大,但它們是穩定的,不變的,所以在我的VS項目中直接包含源代碼對我來說似乎毫無意義 - 它更多的是加載,更多的是編譯等。我寧願僅僅構建2個開源項目,在一個固定版本上,然後從主項目中引用它們。建立一個使用多個外部開源項目的VS項目的最佳方式是什麼?

但這給了我一些問題。

  1. 我想要DEBUG和RELEASE版本的庫 - VS無法在基於這些定義的引用之間切換。

  2. 如果我想進入其他項目中的代碼 - 它不像代碼一樣簡單,調試就更困難了嗎?還是它?

  3. 別的東西我還沒有想到的......

因此,雖然我的想法玩,我想我會問怎麼你們會設置它。

主項目和2個開源項目都在不同的SVN倉庫中。 開放源代碼項目我不會每天都得到新的主幹,而是在發佈上進行修復。

感謝

回答

4

1)您可以參考之間的不同構建配置如果您通過編輯.csproj的文件做手工切換。

csproj文件是一個MSBuild腳本,它是XML。如果你瀏覽它,你會發現一個<ItemGroup>元素,其中包含一堆<引用>元素。您可以添加一個條件,這些參考元素像這樣的一個:

<Reference Condition=" '$(Configuration)' == 'Debug' " Include="System.Drawing" /> 

的包括屬性可以包含的組件,這不一定是爲調試不同的發行版本的二進制文件的完整強名稱。在這種情況下,您可以添加一個<HintPath>元素以包含.dll的路徑。

<Reference Include="assembly strong name"> 
    <HintPath>c:\LibraryStuff\Debug\Library.dll</HintPath> 
</Reference> 

你的提示路徑也可以是相對的:

<HintPath>..\..\LibraryStuff\Debug\Library.dll</HintPath> 

[免責聲明:我從來沒有真正與引用做到了這一點,雖然,我不能保證不會有問題。我很快測試了它,它似乎工作正常,雖然Visual Studio不會顯示這兩個引用,無論您選擇哪個構建配置(儘管它只爲匹配的配置類型構建一個)。它還提出一個警告圖標,如果他們有匹配名稱的第二個,但編譯似乎很好地工作。]

如果你有問題,你可以嘗試只具有兩種不同的HintPath節點一個參考,並把有條件的提示路徑。


2)只要你有.pdbs和源代碼都在正確的地方,通俗易懂,你就應該能夠通過剛剛步入代碼,即使你直接通過調試到庫僅引用.dll文件。

+0

1.有趣的,我會調查它 2.問題是,我認爲,當調試由於優化等調試和發佈版本之間存在差異。 感謝您的答覆,但。 – 2010-01-14 17:08:25

+0

回覆:2 - 如果發佈版本是在完整的調試符號打開的情況下完成的(因爲你有源代碼,你可以自己動手做),那麼即使在發佈模式下,你也應該沒有問題。由於像你說的那樣優化,你將無法一步到位,但總的來說,調試仍然可以正常工作。 – 2010-01-14 19:33:37

相關問題