【问题标题】:Visual Studio 2010 Winforms keeps forgetting resourcesVisual Studio 2010 Winforms 总是忘记资源
【发布时间】:2012-05-01 11:35:29
【问题描述】:

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

但是,一旦我关闭了该表单的设计器,然后打开它,我就会看到错误对话框:

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 中删除图标。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 太棒了!这个解决方案对我有用。我遇到了和 Grofit 一样的问题。我查看了引用,发现我的项目正在引用自己。我不知道那是怎么发生的,因为我不记得自己曾经把它放在那里。 VS 会自动添加此引用还是提示用户输入它?似乎是一个众所周知的错误还是只是我?
    • @DerekW 我无法确定 Visual Studio 执行此操作的原因或时间,我只能猜测这是某种错误。
    • 完美!这个解决方案也对我有用!更不用说,它显然大大改善了我的应用程序的加载时间!这当然可能是巧合。
    【解决方案2】:

    这很可能与命名空间冲突有关。

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

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

    【讨论】:

    • 我是这么想的,但是当我删除所有内容(包含资源的文件夹、实际资源文件以及对它的任何引用)然后重新创建它时,我从项目外部重新添加它们并让它把它们放在任何它想要的地方。仍然是同样的问题,解决方案中没有资源命名空间,除了它自己为所述资源创建的命名空间。
    • +1 如果可以的话,尝试将其剥离(进入一个简单的项目)直到问题清晰可见。
    【解决方案3】:

    我以前遇到过这个错误。当我添加一个资源,然后把它拿走或修改它时,它就出现了。我发现我可以解决这个问题的唯一方法是打开 .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>
    

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

    我希望这会有所帮助。

    【讨论】:

    • 我已经删除了所有这些类型的引用,而我正在删除其他所有内容,这没有任何区别,一旦我重新打开项目并通过 VS 现有文件对话框将它们添加回来,它就起作用了同样的方式...
    • 我再次尝试手动修改此文件,手动删除了 resources.resx 或其他任何名称,然后从头开始创建并一一添加以查看它们是否正常工作.. . 它们都不起作用 :( 我只是想知道这是否是 VS2010 的错误?我会尝试创建一个新项目并看看它是否会发生。
    【解决方案4】:

    这是非常烦人的问题之一,在我遇到另一个导致我改变的问题之前,我永远不会想到这个问题。

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

    【讨论】:

      【解决方案5】:

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

      之前我将所有 Private 全局变量更改为 Public 属性。

      public Textbox exampleTextBox { get; set; }
      

      我这样做有多种原因,但设计者视图不喜欢它。我相信它一定有一些解析问题。

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

      public Textbox exampleTextBox;
      

      这修复了我的设计师视图。

      【讨论】:

        【解决方案6】:

        这对我有用。 (尝试了所有发布的内容,但没有任何乐趣。)

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

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

        就我而言,我不得不返回Project Properties 并更改实际条目 在Default namespaceCompanyName.MyProject

        砰,没问题了。

        【讨论】:

          【解决方案7】:

          我找到了另一种方法

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

          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();
              }
          

          我希望这会有所帮助;-)

          【讨论】:

            【解决方案8】:

            我和你有同样的问题,尽管我使用的“解决方案”可能甚至不被称为这样。我确实知道我向其中添加了一些设置项目,然后将其删除,同时摆弄了一些图像的构建操作。

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

            如果您确实对项目解决方案进行了备份,请仅在万不得已的情况下尝试此方法。

            【讨论】:

              【解决方案9】:

              我尝试了所有其他答案,但没有一个有效。

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

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

              【讨论】:

                【解决方案10】:

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

                【讨论】:

                  猜你喜欢
                  • 2011-08-06
                  • 2011-03-02
                  • 2011-10-11
                  • 1970-01-01
                  • 2011-10-03
                  • 2020-03-30
                  • 2012-03-08
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多