【问题标题】:WPF - Image 'is not part of the project or its Build Action is not set to Resource'WPF - 图像'不是项目的一部分或其构建操作未设置为资源'
【发布时间】:2015-09-08 08:51:04
【问题描述】:

我有一个项目需要在窗口中显示图像。这是一个静态图像,我通过“添加>现有项目”添加。它存在于项目的根目录中。

我像这样在测试页面中引用图像 -

<Page x:Class="Critter.Pages.Test"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="Test">
      <Image Source="bug.png"/>
</Page>

问题是我收到一条消息,说它找不到或者它的构建操作不是资源,但它确实存在并且它的构建操作是资源。如果我创建一个新应用程序并将其扔到一个窗口上,那么它工作正常。

任何帮助都会很棒。

【问题讨论】:

  • 图片是否在子文件夹中?
  • 不。图片位于项目根目录中。
  • 构建操作是否设置为 Resource 或 Embedded Resource ?

标签: wpf image resources imagesource buildaction


【解决方案1】:

尝试进行完全重建,或删除构建文件,然后再构建文件。

Visual Studio 并不总能获取资源的更改,重新编译它可能会很痛苦。

还可以尝试使用完整的 URI,因为当我遇到同样的问题时这对我有帮助。类似的东西

pack://application:,,,/MyAssembly;component/bug.png

【讨论】:

  • 谢谢老兄。这是一种享受!仍然没有真正得到那些 Pack URI,但完全重建成功了。
【解决方案2】:

我遇到了同样的问题。清理和重建解决方案并没有解决它,所以我重新启动了 Visual Studio,它做到了。希望 Visual 2010 能够解决这个问题以及在 Visual 2008 中困扰 wpf 的许多其他问题。

【讨论】:

  • 谢谢 - 这就是解决方案!
【解决方案3】:

它没有,或者至少当前的测试版没有。我在调查完全相同的问题时发现了这个页面。重建/清理什么也没做。关闭并重新加载解决方案后,文件神奇地再次变得兼容。

【讨论】:

    【解决方案4】:

    异步加载示例,另一种选择。示例 clip.mp4 位于 Web 项目根目录中。

    void Landing_Loaded(object sender, RoutedEventArgs e)
    {
        //Load video async
    
        Uri pageUri = HtmlPage.Document.DocumentUri;
        Uri videoUri = new UriBuilder(pageUri.Scheme, pageUri.Host, pageUri.Port, "clip.mp4").Uri;           
    
        WebClient webClient = new WebClient();
        webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(webClient_OpenReadCompleted);
        webClient.OpenReadAsync(videoUri);
    }
    
    void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        byte[] VideoBuffer = new byte[e.Result.Length];
        e.Result.Read(VideoBuffer, 0, (int)e.Result.Length);
        MemoryStream videoStream = new MemoryStream(VideoBuffer);
        ContentVideo.SetSource(videoStream);
        ContentVideo.Stop();
        ContentVideo.Play();
    }
    

    【讨论】:

      【解决方案5】:

      我遇到了类似的问题。在我从解决方案资源管理器中删除了一个我并没有真正使用的someStyle.xaml 文件之后。 然后我恢复了文件,但没有发生任何变化。清理和重建项目没有帮助。

      只需删除对应的行:

      <ResourceDictionary Source="someStyle.xaml"/> 
      

      成功了。

      【讨论】:

        【解决方案6】:

        → 右键单击​​图像文件 → 点击属性 → 选择构建动作到资源 → 清洁和构建解决方案 → 运行解决方案

        你会得到一切。

        【讨论】:

          【解决方案7】:

          尝试使用“/”开始图像路径:

          <Image Source="/bug.png"/>
          

          【讨论】:

            【解决方案8】:

            您的问题有一个解决方案

            <Image Source="/WpfApplication4;component/images/sky.jpg" />
            

            “组件”不是文件夹!

            【讨论】:

              【解决方案9】:

              我有同样的错误信息,但我的问题是一个简单的 NOOB 错误。

              当我将 .ico 文件添加到“我的项目/资源”时,VS 创建了一个名为 Resources 的子文件夹,我正在尝试使用;

              <Window Icon="icons1.ico">
              

              我应该在什么时候使用;

              <Window Icon="Resources/icons1.ico">
              

              ...不要判断,我 1 周前开始使用 WPF :)

              【讨论】:

                【解决方案10】:

                我遇到了完全相同的问题,但重新启动 VS2008 或清理和重建项目对我不起作用。最后,以下步骤成功了。

                • 在 Windows 资源管理器中,将图像复制到您的项目资源文件夹中。示例:MyProject\Resources\
                • 在 Visual Studio 中右键单击资源并选择“添加 > 现有项”并选择您刚刚复制的图像
                • 在 XAML 表单中将图像源设置为:"Source="Resources/MyImage.ico"(我的图像保存为图标 (.ico) 文件,但此方法适用于任何图像类型

                希望这对某人有所帮助

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-01-02
                  • 2011-01-24
                  • 2015-07-05
                  相关资源
                  最近更新 更多