2013-10-21 70 views
0

在我的解決方案中,我有兩個項目「Project1」和「Project2」。請注意,我使用VS 2010,這些項目是類庫項目。使用相對路徑從另一個項目訪問圖像

在「Project1」中,我有一個「Resources」文件夾,其中包含一個圖像文件「MyPicture.png」。

所以我有這樣的結構:

  • -MySolution
    • PROJECT1
      • 資源
        • MyPicture.png
    • Project2的

現在我需要重複使用同一個畫面中的 「Project2的」。我如何訪問它?

我嘗試使用相對路徑的東西這在 「Project2的」 像:

圖片MYIMAGE = Image.FromFile(@ 「../ PROJECT1 /資源/ MyPicture.png」);

但我得到了一個FileNotFoundException,我也嘗試過不同形式的相對路徑,但沒有成功。

可以通過使用相對路徑在Project2中訪問「Project1」中的此圖像嗎?或者我需要使用反射並將Project1程序集加載到「Project2」中,然後訪問該圖片,或者有另一種方法來訪問該圖片?

謝謝!

+0

爲什麼不使用Project1中的資源(resx)文件來包含圖像資源並公開公開? –

+0

我可以在Project1中添加資源文件,但我需要將其標記爲內部,這是一項要求。 – Clock

+0

看到這個http://stackoverflow.com/questions/10396226/c-sharp-loading-image-from-file-resource-in-different-assembly – Tony

回答

1

一個選項,如果是庫項目,你可以使用ConfigurationManager,因爲它們是DLL。

例如,使用此代碼得到的配置圖片的路徑:

ConfigurationManager.AppSettings["NameConfig"] 

,並在使用該.dll文件包括與路徑

例如關鍵應用程序配置:

<add key="NameConfig" value="C:\MyFolder\MyImage.jpg 
+0

謝謝你的迴應,我沒有理解你想說什麼,但我注意到的一件事是,「值C:\ MyFolder \ MyImage.jpg」是硬編碼和絕對的,例如,如果其他開發人員有該項目可以說從源代碼控制映射到D:分區而不是C:他的構建不會加載圖像,因爲路徑是錯誤的。爲了讓這件事情起作用,我相信只有相對於解決方案內部項目的路徑必須被使用。 – Clock

+0

在配置中,沒有硬編碼。我認爲您的情況最好的解決方案是從使用您的類庫的應用程序的配置中加載資源,因爲您將共享資源。 – Nacho