资源(resx)文件导入

时间:2016-01-05 08:35:36

标签: c# visual-studio-2013 resx

将资源文件从一个项目导入另一个项目后,我遇到了问题。

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

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

  • 通常,资源文件的顺序必须如下:

    Right order

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

    Wrong order

另外,在项目文件(.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文件吗?

2 个答案:

答案 0 :(得分:4)

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

  1. 选择您的resx文件
  2. 打开“属性”标签
  3. 选中“自定义工具”属性,确保存在“ResXFileCodeGenerator”值。
  4. 这可以解决您的问题。

答案 1 :(得分:1)

之前我遇到过同样的问题。我最终做了同样的,复制粘贴。 但你有没有尝试更改项目文件。您的新项目应该在设计器文件节点中包含此节点:

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

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

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