C# 资源(resx)文件导入

C# 资源(resx)文件导入,c#,visual-studio-2013,resx,C#,Visual Studio 2013,Resx,在将资源文件从一个项目导入另一个项目后,我遇到了问题 我与Visual Studio Ultimate 2013、C、Visual Online合作 我的项目中有资源文件。当我创建新项目并将文件和这些资源导入新项目时,MY_RESOURCE.Designer.cs不在其自己的MY_RESOURCE.resx部分中-它就在它旁边 通常,资源文件的顺序必须如下所示: 但是,在新项目中,导入后是这样的: 另外,在项目的文件.csproj中,我发现这些文件的结构是不同的 通常: <Compile

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

我与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" />
我找到了一些类似于此问题的解决方案,将资源的访问修饰符属性从“无代码生成”更改为“公共”,但在此之后,resx文件创建了新的子项-MY_RESOURCE1.Designer.cs而不是MY_RESOURCE.Designer.cs,因此这不是我问题的解决方案

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


有人能告诉我如何将Designer.cs文件绑定到resx文件而不是复制粘贴吗?

我以前也遇到过同样的问题。我最后也做了同样的事情,复制粘贴。 但是您是否尝试过更改项目文件。新项目应在设计器文件节点中包含此节点:

<DependentUpon>Main.en-US.resx</DependentUpon>
我会说,首先导入文件,然后编辑项目文件,并将此节点添加到上面的designer文件节点中,即

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

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

选择您的resx文件 打开“属性”选项卡 检查自定义工具属性,确保ResXFileCodeGenerator值存在。
这应该可以解决您的问题。

我在旧项目的MY_PROJECT.csproj文件中有这个标记Main.en-US.resx。。我已经更改了MY_RESOURCE.resx和MY_RESOURCE.Designer.cs的标记,在打开Visual Studio和project之后,Designer.cs在resx中的顺序一切正常。但是,正如你的建议——我必须从记事本或其他编辑器中添加这个标签,是吗?我想在VisualStudio中会有其他的解决方法。。。现在,当我从记事本打开并更改项目时,您知道如何从VisualStudio以文本编辑器的形式打开项目的设计器代码吗?谢谢。但这是同样的事情,打开resx文件并将访问修饰符属性从无代码生成更改为内部。这样可以在resx中创建名为MY_RESOURCE1.Designer.cs而不是MY_RESOURCE.Designer.cs的新Designer.cs,并且旧的MY_RESOURCE.Designer.cs再次位于MY_RESOURCE.resx旁边。是的,因为您的项目中已经有MY_RESOURCE.Designer.resx。我不明白你想做什么,链接到resx的C文件通常是从你的代码中访问资源的自动生成代码!是的,这是添加新Designer.cs的正确方法。现在,我删除了旧的Designer.cs,并将访问修饰符属性从“无代码生成”更改为“公共”。在resx中添加了一个新名称,名称正确:MY_RESOURCE.Designer.cs。我认为它有效。。但是,这是正确的方式吗?项目中一切正常吗?所以,这是我的解决方案,非常感谢。是的,通过这种方式,一切都应该正常,就像在project中创建新的资源文件一样。