2011-08-17 53 views
0

我注意到可以使用GACUtil將示例程序的v1.0.0.0註冊到C:\ Windows \ assembly上的GAC如果程序集針對.Net Framework的v3.5,並且如果程序集將.Net Framework的v4以C:\ Windows \ Microsoft.NET \程序集的GAC爲目標,則還可以管理註冊相同版本v1.0.0.0。註冊裝配的相同版本,但具有不同的目標框架到2個GAC

這導致生活在不同GAC中的2個程序集具有相同的版本。

這個特性很有用,因爲我希望客戶端使用舊的GAC(C:\ Windows \ assembly)來查看程序集的v1.0.0.0,而不更新它們的app.config到目標版本的框架。

目前我收到以下錯誤,如果我嘗試使用相同版本增加2個集到GAC中安裝項目:

警告:兩個或多個對象具有相同的目標位置(「[GAC] X \ 1.0.0.0_2752785e627d5953 \ X.dll')警告:兩個或多個對象具有相同的目標位置('[gac] X \ 1.0.0.0_2752785e627d5953 \ X.dll')

如果我分成兩個單獨的項目(一個目標爲v3.5,另一個目標爲v4)並運行這兩個安裝程序,則只有一個程序集實例在一個GAC中註冊(而非GACUtil實現的)。

我一直沒有找到一種方法來實現這個與安裝/ msi項目。可能嗎?

+0

那麼,你必須運行gacutil.exe *兩次*以及使用不同版本的gacutil。所以它確實沒有什麼不同。 –

回答

0

以這種方式使用gacutil似乎意味着我們可以針對一個程序集定位不同的框架,安裝到它們各自的GAC中,這意味着客戶端無論如何都不會改變。但是,安裝/部署MSI項目不允許這樣做。

此外,當您使用GACUtil查看程序集的GAC條目時,只列出一個;它沒有說明它駐留在哪個GAC中。因此,似乎您可以將相同版本的程序集註冊到v2和v4 GAC,而GACUtil並不意味着您應該這樣做。此外,GACUtil是development tool,不應該用於部署。

相關問題