2017-06-16 85 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

相关问题