2017-06-16 92 views
0

後,我有C#控制檯應用程序,我有這樣的代碼有:找不到文件夾發佈應用

var rootDirectory = Path.GetDirectoryName(Path.GetDirectoryName(System.IO.Directory.GetCurrentDirectory())); 

var img = [email protected]"Content\\{screenName}.png"; 
Console.WriteLine(Path.Combine(rootDirectory, img)); 

當然,我有內部解決方案,我有我的圖片內容文件夾。 \用戶\用戶名\應用程序數據\本地\ APPS \ 2.0 \ KRWNP492.QP2 \內容\ name.png

:當我運行調試,但發佈的應用程序後,搜索該文件夾

c將其取回這些圖像

參加認爲裏面KRWNP492.QP2沒有命名Content

我不能改變文件夾中安裝該應用程序的任何文件夾。並且錯誤是:

System.ArgumentException:參數無效。 在System.Drawing.Bitmap..ctor(字符串文件名) 在X.Common.CommonMethods.IsExpectedScreen(位圖currentScreen,字符串屏幕名)

我能做些什麼?

+0

那麼,你想發佈的內容呢?或者你想要將圖像嵌入到文件中? – Default

+0

是的,我想要該文件夾(和文件夾內的圖像以及)將發佈在我的應用程序將安裝在該文件夾 – gsiradze

+0

如果您右鍵單擊您的圖像,並選擇屬性,你應該能夠設置內容類型,如果他們應該被複制到你的輸出目錄或沒有。不知道這是否會影響發佈。也許你已經擁有了這一套? – Default

回答

1

應用程序編譯完成後,沒有「解決方案」目錄。有一個可執行文件(.exe)和一些圖像文件。

您應該做的是在Visual Studio的屬性窗格中將圖像文件的Build Action屬性設置爲「Content」,並將Copy To Output Directory屬性設置爲「Copy if newer」。這應該確保在構建應用程序時將Content目錄和圖像複製到輸出目錄。

然後,您可以使用相對路徑在運行時查找您的圖片:

string path = $"Content\\{screenName}.png"; 
System.Drawing.Bitmap b = new System.Drawing.Bitmap(path); 

請確保您複製包含圖像的部署目錄名爲.exe沿內容文件夾。

+0

我不能這樣做發佈visual studio自動複製部署目錄中的文件夾? – gsiradze

+0

這取決於你如何部署,但這是另一回事。 – mm8

+0

右鍵點擊解決方案併發布 – gsiradze

0

只需使用System.Reflection.Assembly.GetEntryAssembly().Location;來檢索應用程序的路徑。

+0

當我在調試中寫入當前文件夾是'solution/bin/debug/appname.exe'和使用我的方法是解決方案文件夾,我有那個'content'文件夾 – gsiradze

+0

問題不在於應用程序的位置。這是關於爲什麼內容不在OP期望的地方。再仔細閱讀一遍問題。 – Default

0

您應該可以使用StartupPath屬性輕鬆獲取目錄。

var rootDirectory = Application.StartupPath; 
+0

調試時的StartupPath是bin/debug文件夾,並且我在解決方案文件夾中有該文件夾.. – gsiradze

+0

問題不在於啓動路徑。這是關於爲什麼內容不在OP期望的地方。再仔細閱讀一遍問題。 – Default

相關問題