不是程序集

时间:2018-06-17 17:08:20

标签: xamarin gtk#

我正在使用Xamarin Studio和GTK#(.NET)。我有以下问题: 我做了一个应用程序,我需要(dinamically)下载Web图像(favicon)并将它们显示在Gtk.Image小部件中。当我尝试这样做时,我收到以下错误:

System.ArgumentException: 'myfile.ico' is not a valid resource name of assembly 'myApp, Version=1.0.6742.24722, Culture=neutral, PublicKeyToken=null'.
at at Gdk.PixbufLoader.InitFromAssemblyResource(Assembly assembly, String resource)
at at Gdk.PixbufLoader..ctor(Assembly assembly, String resource)
at at Gdk.Pixbuf..ctor(Assembly assembly, String resource)
at at Gdk.Pixbuf.LoadFromResource(String resource)

如果我在资源文件夹中添加了favicon,在下载之后,它会起作用,但是我需要做一个dinamically(如果我添加一个新网站,我想在那里看到它的图标..)。 代码:

using (WebClient client = new WebClient())
{
   client.DownloadFile(new Uri("https://google.com/favicon.ico", 
              Directory.GetCurrentDirectory() + "\..\..\Res\google.ico");
}

faviconImage.Pixbuf = Gdk.Pixbuf.LoadFromResource("myApp.Res.myfile.ico");

图像在文件夹中(我可以看到它,一切正常)但如果我不在资源文件夹中包含它(手动),我就无法使用它。

请帮帮我:'(

1 个答案:

答案 0 :(得分:0)

Pixbuf.LoadFromResource仅从嵌入式程序集资源加载图像数据。创建后,无法向程序集添加资源。

要从文件创建Pixbuf,请使用支持文件路径的.ator或使用文件流的文件。

类似的东西:

var filePath = Path.Combine(Directory.GetCurrentDirectory(), "myDownloadIcon.ico");
var newPixBuf = new PixBuf(filePath):
faviconImage.Pixbuf = newPixBuf;