更改资源文件(resx)命名空间和访问修饰符

Mic*_*ira 52 c# resx namespaces visual-studio-2008

在我的webproject中,我在我的App_GlobalResources文件夹中使用了4个资源文件.其中一个(lang.resx)已经在我到达项目之前创建.它具有正确的namespace(WebApplication.App_GlobalResources)和访问修饰符:public.

另一方面,我刚刚创建的另外三个资源文件具有不同的命名空间(Resources)和internal访问修饰符,我无法在Visual Studio的资源文件表单上更改它,因为它已被禁用.如果我尝试直接在designer.cs文件中更改它,则会在下次保存文件时取消修改.

这不是一个关键的错误,但它可能会误导项目中的其他开发人员为他们将使用的资源文件找到不同的命名空间和访问修饰符.

Mar*_*afe 68

快速回答是:只需打开资源文件的属性,然后将其更改为Custom Tool Namespace您需要的命名空间.
就那么简单.

  • VS2012最简单的答案 (3认同)

Dav*_*nde 45

我不完全确定问题所在,但我可以告诉你,你可以通过改变用于生成代码的工具来解决它.

当我试图关注这篇文章时,我也偶然发现了这个问题.按照作者的建议下载源文件后,我注意到已经存在的资源文件在"自定义工具"属性中具有以下类:"PublicResXFileCodeGenerator".此外,"构建操作"属性设置为"嵌入式资源",但我不确定这是否是问题的一部分.

我创建的任何新资源文件都使用自定义工具"GlobalResourceProxyGenerator".用上述"PublicResXFileCodeGenerator"覆盖后,似乎可以解决问题,无论真正的问题是什么.

我还注意到,当前资源文件采用"2.0"格式,而新文件采用"1.3"格式.当您使用XML编辑器(或使用visual studio本身的"open with")打开resx文件时,您可以看到这一点.

我希望你可以让它像这样工作,但它并不理想.这可能是Visual Studio 2008和SP1的安装问题,或类似的东西.

更新:

此博客条目也可能有所帮助.


Joo*_*pel 11

或者您可以更改CustomTool属性(在VS2010中测试).

您只需打开资源文件的文件属性,并将"自定义工具"从"GlobalResourceProxyGenerator"更改为"PublicResXFileCodeGenerator",这是本地资源文件的默认工具.接下来,您必须将"构建操作"更改为"嵌入式资源".您可能还想分配一个适当的自定义工具命名空间,如"资源",以便正确访问该文件,但这不是必要的......

资源


psy*_*tik 6

resx根据Visual Studio项目配置中指定的命名空间选取命名空间.更新您的项目以获得正确的命名空间,并且resx应该继承它(新的肯定,不确定现有的是否会被修复 - 他们应该).


Lui*_*ipe 6

资源文件访问修饰符位于.csproj;

直接更改.csproj文件应该可以解决此问题。

查找该<Generator>元素并根据以下示例设置其值:

带修饰符的资源文件internal如下所示,

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>ResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

其中带有修饰符的资源文件public如下所示。

<ItemGroup>
 <EmbeddedResource Update="resources.resx">
  <Generator>PublicResXFileCodeGenerator</Generator>
  <LastGenOutput>resources.Designer.cs</LastGenOutput>
 </EmbeddedResource>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)