4

使用Visual Studio將資源嵌入到.NET程序集中時,它以程序集名稱作爲前綴。但是,程序集可以嵌入資源,而不是以彙編名作爲前綴。我能看到做到這一點的唯一方法是使用ILDASM反彙編程序集,然後重新組裝它,添加新的資源 - 哪些工作,但是...我真的需要完成這個句子嗎?將資源嵌入.NET程序集中而不使用匯編前綴?

(桌面的.NET Framework 3.5,Visual Studio 2008的SP1,C#,Windows 7企業版64位)

回答

7

實際上,有一種方法,但您需要手動編輯.csproj。

在.csproj的文件,找到EmbeddedResource元素,看起來像下面這樣:

<EmbeddedResource Include="Resources\MyImage.png" /> 

添加LogicalName子元素,如下圖所示。

<EmbeddedResource Include="Resources\MyImage.png"> 
    <LogicalName>MyImage.png</LogicalName> 
</EmbeddedResource> 

進行此更改後,可以將資源牽強,因爲「MyImage.png」 - 默認命名空間和文件夾的名稱被省略。

看起來像這種能力已經可用since 2005

+0

很酷,謝謝!:-)這正是我去年需要知道的。我會牢記以備將來參考。 – 2011-10-06 06:25:19

+0

絕妙的把戲!驚訝的Visual Studio 2010屬性表不包括這個選項! – 2013-09-24 02:04:48

1

未裝配的名字 - 命名空間;)默認的命名空間,IIRC。前綴是默認名稱空間;)

+0

好的,謝謝....在這種情況下,有沒有一種方法(除了刪除默認命名空間)來防止這種行爲? – 2010-03-16 12:14:19

+0

@Robert阻止它。你在做什麼?不要管它。你會因此受到傷害。等到你父親回家。 – Will 2010-03-16 12:22:24

+2

沒有其他辦法。刪除默認名稱空間並不是那麼糟糕,並且對已有的名稱空間周圍的其他已有代碼沒有任何影響。儘管它會影響創建一個URI的任何東西,該URI會引用未明確命名空間的應用程序中的任何內容。 – slugster 2010-03-16 12:25:57