【问题标题】:Resource (resx) file import资源 (resx) 文件导入
【发布时间】:2016-04-09 00:25:36
【问题描述】:

将资源文件从一个项目导入另一个项目后出现问题。

我使用 Visual Studio Ultimate 2013、C#、Visual Online。

我的项目中有资源文件。当我创建一个新项目并将文件和这些资源导入一个新项目时,MY_RESOURCE.Designer.cs 不在它自己的 MY_RESOURCE.resx 部分中 - 它在它旁边。

  • 通常,资源文件的顺序必须是这样的:


  • 但是,在新项目中,是这样的 - 导入后:

另外,在我发现的项目文件(.csproj)中,这些文件的结构不同。

  • 通常:

    <Compile Include="Resources\Main\Main.en-US.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Main.en-US.resx</DependentUpon>
    </Compile>
    ...
    <EmbeddedResource Include="Resources\Main\Main.en-US.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>Main.en-US.Designer.cs</LastGenOutput>
    </EmbeddedResource>
    

  • 导入后:

    <Compile Include="Resources\Main\Main.en-US.Designer.cs" />
    ...
    <EmbeddedResource Include="Resources\Main\Main.en-US.resx" />
    

我找到了一些类似这个问题的解决方案,将 Recourse 的“访问修饰符”属性(其中)从“无代码生成”更改为“公共”,但在此之后,resx 文件创建了新的子文件 - MY_RESOURCE1.Designer.cs(不是我的 MY_RESOURCE.Designer.cs),所以这不是我的问题的解决方案。

因此,为了导入它们,我必须创建新的资源文件并将旧项目资源文件中的单词复制并粘贴到新的资源文件中。

有人可以告诉我将 Designer.cs 文件绑定到 resx 文件的方法吗?

【问题讨论】:

    标签: c# visual-studio-2013 resx


    【解决方案1】:

    C# 代码(“Main.en-US.Designer.cs”)由 VS 自动生成,您必须检查 Visual Studio 是否正确管理您的 resx 文件。为此,请检查您的 resx 文件的自定义工具属性:

    1. 选择您的 resx 文件
    2. 打开“属性”选项卡
    3. 检查“自定义工具”属性,确保存在“ResXFileCodeGenerator”值。

    这应该可以解决您的问题。

    【讨论】:

    • 但这是同样的事情,打开 resx 文件并将“访问修饰符”属性从“无代码生成”更改为“内部”。这种方式会在名为 MY_RESOURCE1.Designer.cs(不是 MY_RESOURCE.Designer.cs)的 resx 中创建新的 Designer.cs,并且旧的 MY_RESOURCE.Designer.cs 再次位于 MY_RESOURCE.resx 旁边..
    • 是的,因为您的项目中已经有了 MY_RESOURCE.Designer.resx。我不明白您要做什么,链接到 resx 的 C# 文件通常是自动生成的代码,用于从您的代码中访问资源!
    • 是的,添加新的 Designer.cs 是正确的方法。现在我删除了旧的 Designer.cs 并将“访问修饰符”属性从“无代码生成”更改为“公共”。在 resx 中添加了一个新的(名称是正确的:MY_RESOURCE.Designer.cs)。我认为它有效..但是,它是正确的方式吗?项目中的一切都井井有条吗?所以,这是我的解决方案,非常感谢。
    • 是的,这样一切都应该没问题,就像你在项目中创建一个新的资源文件一样。
    【解决方案2】:

    我之前也遇到过同样的问题。我终于做了同样的事情,复制粘贴。 但是您是否尝试过更改项目文件。您的新项目应该在设计器文件节点中有这个节点:

    <DependentUpon>Main.en-US.resx</DependentUpon>
    

    我会说,首先导入文件,然后编辑您的项目文件并将此节点添加到上面,在您的设计器文件节点中,即,

    <Compile Include="Resources\Main\Main.en-US.Designer.cs">
    

    【讨论】:

    • 我在旧项目的 MY_PROJECT.csproj 文件中有这个标签(Main.en-US.resx)。我已经更改了“MY_RESOURCE.resx”的标签和“MY_RESOURCE.Designer.cs”,打开 Visual Studio 和项目后,一切都按顺序排列(Designer.cs 在 resx 中)。但是,根据您的建议 - 我必须从记事本或其他编辑器中添加此标签,是吗?我认为还有其他方法可以从 Visual Studio 解决它......而且,你现在如何从 Visual Studio 中打开项目的设计器代码作为文本编辑器(当我从记事本打开并更改它时)?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多