2012-05-26 37 views
1

由於VS2010中的某些原因,我無法將任何文件嵌入到程序集中。這些文件有其生成操作屬性設置爲嵌入的資源,因爲他們應該,但在執行裝配時,它開創沒有資源。例如,下面的測試代碼:VS2010未將文件嵌入程序集

string[] list = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); 
string msg = (list.Length > 0) ? "Full" : "Empty"; 
MessageBox.Show(msg); 

總是顯示 「」,因爲GetManifestResourceNames()總是返回一個空列表。

此問題影響使用nettiers在不方便說具體情況,包括存儲過程到數據庫的一個項目,所以他們必須從Procedures.xml文件,這BTW自動與設置取構建動作 = 嵌入的資源類生成後,然後當然當一個函數試圖從它獲取任何SQL腳本時,程序將失敗。

我還創建了幾個測試項目,我嘗試嵌入xml和gif,總是沒有成功。

更新:這個問題似乎只爲C#。我在VB.Net中複製了測試項目,並且在那裏嵌入文件。我注意到,在輸出窗口中,在C#的情況下,編譯器命令行不包括/資源選項(應該在那裏後面加上要嵌入的文件的名稱),而對於VB的情況,確實出現。

是否有任何地方的任何全局設置或配置文件C#我應該檢查? (該項目的構建選項沒有什麼奇怪的)

有沒有人有什麼可能發生的想法和如何解決這個問題?

回答

0

最後,我找到了原因:

有是Microsoft.CSharp.targets文件內的錯線(位於內C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319)。有一個標籤寫爲:

< EmbeddedResource ˚F包括= 「@(_臨時)」 的/>

代替

< EmbeddedResource包括=「@(_臨時)「/>

正確寫入恢復了e mbed文件

F是怎麼出現的,爲什麼這個文件首先被修改,我不知道......儘管是一個。NET程序員已經有好幾年了,我在網絡搜索這個問題之後才意識到「.targets」文件,因爲從來沒有必要去查看MSBuild的東西。

+0

我有一個類似的問題,它似乎與解決方案文件有關。關閉並重新打開解決方案後,我發現我添加的文件不再包含在我的項目中。重新加入後,他們工作。 (VS2013) –