0

我有一个像这样的 WPF 应用程序项目目录

在此处输入图像描述

实际上,我在 Visual Studio 项目中添加了一个名为“Resources”的文件夹,并在其中添加了一些图像。实际上,该文件夹是在上面的位置创建的。我们可以在上面的图片中看到。“Resource”文件夹中图像的默认属性如下所示

BuilAction:Resource
Copy output Directory:Do not Copy 

我正在从这个文件夹中读取一个名为“form1.ico”文件的图像,如下所示

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" x:Class="MyApp.FrmMain"
    Title="MyApp" Height="768" Width="1024" WindowStartupLocation="CenterScreen" x:Name="MainWindow" WindowStyle="None" Loaded="MainWindow_Loaded" ShowInTaskbar="False" ResizeMode="NoResize" WindowState="Maximized" mc:Ignorable="d" Icon="/MyApp;component/Resources/form1.ico" StateChanged="Window_StateChanged">

如果我使用 Visual Studio 2008 运行应用程序,每个人都认为工作正常。但是资源文件不是在 Bin 文件夹中创建的。我的问题是,如果我将 bin 文件夹从这个位置复制到另一个位置,然后运行创建的 exe bin 应用程序崩溃(似乎它正在搜索图像的绝对路径)如果我将资源文件夹移动到另一个位置也会发生这种情况。我试图设置像这样的图像属性

BuilAction:Content
Copy output Directory:copy always

现在它正在 bin 文件夹中创建一个文件夹名称“资源”。但它甚至没有通过 Visual Studio 运行应用程序。它抛出一个异常,说它找不到特定的图标。

  • 任何人都可以解释为什么会这样吗?
  • 部署应用程序时如何复制这些资源文件夹?因为我需要我的应用程序在部署环境中从该文件夹中读取文件。
  • 如果我将属性设置为嵌入式资源,是否可以在运行时用另一个图像替换图像?

提前致谢:)

4

1 回答 1

1

要引用相对路径,请将您的图标位置设置为;

Icon="Resources/form1.ico"

我不确定为什么您的图像没有被复制。

我刚刚尝试过,我的图标被复制到资源目录中的调试目录中。

可以肯定的是,您是否确定将图标的“构建操作”设置为“内容”,并将“复制到输出目录”设置为“始终复制”?

另外,再次确定...您是否在项目中包含该文件?也就是说,如果您将“显示所有文件”选项设置为打开,如果您右键单击该图标,则可以将其包含在项目中。

于 2013-01-16T20:40:06.520 回答