Visual Studio 2010 Winforms会忘记资源

时间:2012-04-19 21:09:31

标签: c# .net winforms icons embedded-resource

由于某些原因,在我当前的项目中,我通过项目属性创建了我的资源文件,添加了大量现有图像。然后将这些图像添加到菜单项,保存。此时一切看起来都很好,图像都正确映射。

然而,一旦我关闭该表单的设计器,然后打开它我会得到错误对话框说:

The type 'My.Project.Properties.Resources' has no property named 'icon_plus'.

令人讨厌的是,如果你按照代码进行操作就没有错误,那就编译好了:

this.newToolStripMenuItem.Image = global::My.Project.Properties.Resources.icon_plus;

我尝试删除所有资源并从项目中删除资源文件,完全关闭IDE然后重新加载它。我已经移动了文件的位置,但我只是出于想法,它真的开始感谢大约10个表单和控件,每个给我这个错误,他们从UI中删除图标。

10 个答案:

答案 0 :(得分:17)

查看项目引用,并删除对self的引用。

答案 1 :(得分:4)

这是非常讨厌的问题之一,在我遇到另一个导致我改变事情的问题之前,我从未想过这个问题。

似乎使用.net 4的客户端配置文件而不仅仅是默认的.net 4运行时来到应用程序。一旦我改变了这个问题,这个问题就停止了,而我最近出现的另一个缺少的命名空间问题就消失了。

答案 2 :(得分:3)

这对我有用。 (尝试了一切,没有欢乐。)

当我第一次启动项目时,项目属性中指定的默认namespaceMyProject。 (所以我的大多数课程看起来像namespace MyProject{ public class foo{} }

后来我将类的命名空间从MyProject更改为CompanyName.MyProject 这也是问题发生的时候。

在我的情况下,我不得不回到Project Properties并更改实际条目 在Default namespaceCompanyName.MyProject

砰,没有问题。

答案 3 :(得分:2)

最有可能发生命名空间冲突。

仔细检查项目中的所有命名空间,VS喜欢做'ProjectName.FolderName'。如果它将Icon文件夹中的某个类/资源文件自动更改为ProjectName.Icon,则可能与类/结构名称冲突。

有趣的是应用程序构建..

答案 4 :(得分:1)

我遇到了同样的问题。 VS不会加载任何表单对象。我尝试了所有其他方法而没有结果。

之前我将所有私有全局变量更改为公共属性。

public Textbox exampleTextBox { get; set; }

我出于多种原因这样做,但设计师的观点并不喜欢它。我相信它必须有一些解析问题。

对象必须是全局变量而不是属性。

public Textbox exampleTextBox;

这修复了我的设计师观点。

答案 5 :(得分:1)

我找到了另一种方式

在私有方法中移动初始化表单代码,如下所示

private void FormInitialize(){/*Your code here*/}

在表单构造函数中使用它

public Form1()
    {
        InitializeComponent();
        FormInitialize();
    }

从Button,menuItem或其他类似的调用方法

    private void ChangeCultureToFrench_Click(object sender, EventArgs e)
    {
        Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr");
        this.Controls.Clear();
        this.InitializeComponent();
        FormInitialize();
    }

我希望这有帮助; - )

答案 6 :(得分:0)

我之前遇到过这个错误。当我添加资源,然后把它拿走或者修改它时,它就出现了。我发现我可以解决这个问题的唯一方法是打开.csproj文件并查找.ico它给出错误并删除它。你正在寻找

<ItemGroup>
    <None Include="Resources\SomeResource.ico" />
</ItemGroup>

在此之后,保存文件。打开解决方案并重新添加。希望这对你有用。但请注意,这不是理想的解决方案。

编辑:

行。所以这并没有解决你的问题。进入解决方案文件夹并导航到“属性”文件夹。在里面你会看到一个名为resources的文件。打开它并尝试找到有问题的文件名

<data name="YourNamedIco" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\SomeResource.ico;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, 
         Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> 
</data>

如果你找到它,请删除它,保存。

我希望这会有所帮助。

答案 7 :(得分:0)

我和你有同样的问题,虽然我使用的“解决方案”甚至可能不会这样称呼。我确实知道我为它添加了一些安装项目,并将其删除,同时摆弄了一些图像的构建操作。

我用过的解决方案?删除当前项目,并恢复到最新的备份,该备份没有问题。当然,这只有在您备份项目解决方案时才有效。

如果您确实备份了项目解决方案,请仅尝试使用此方法作为最后的手段。

答案 8 :(得分:0)

我没有尝试所有其他答案。

最终似乎对我有用的是通过右键单击您的项目进行“卸载项目”,然后“重新加载项目”。在检查我的.cs [Design]是否正常工作之前,我还通过右键单击解决方案资源管理器中的项目然后单击“重命名”将我的项目重命名为其他项目。

不要问我为什么这样做......

答案 9 :(得分:0)

打开 Resources.resx 文件并添加新图像,然后构建您的解决方案/项目。错误将消失。