Visual studio 2010 Visual Studio 2010:将自动生成的资源折叠到其他文件后面?

Visual studio 2010 Visual Studio 2010:将自动生成的资源折叠到其他文件后面?,visual-studio-2010,resources,msbuild,projects-and-solutions,resx,Visual Studio 2010,Resources,Msbuild,Projects And Solutions,Resx,我有以下文件:Foo.cs,其中包含一个Foo类。我似乎找不到正确的方法将我的资源文件resx组织在各自的文件后面 如果我创建了一个Foo.resx,那么资源文件就会在Foo.cs类后面整齐地折叠起来。但是,这会导致问题,因为生成代码的标准自定义工具试图在Foo.Designer.cs中创建另一个Foo类:内部类Foo{…}。如果我的Foo.cs文件还没有包含Foo类,那么这可以正常工作,不会发生命名冲突 为了修复命名冲突,我尝试给它一个自定义名称空间MyProj.Resources,并使用别名

我有以下文件:Foo.cs,其中包含一个Foo类。我似乎找不到正确的方法将我的资源文件resx组织在各自的文件后面

如果我创建了一个Foo.resx,那么资源文件就会在Foo.cs类后面整齐地折叠起来。但是,这会导致问题,因为生成代码的标准自定义工具试图在Foo.Designer.cs中创建另一个Foo类:内部类Foo{…}。如果我的Foo.cs文件还没有包含Foo类,那么这可以正常工作,不会发生命名冲突

为了修复命名冲突,我尝试给它一个自定义名称空间MyProj.Resources,并使用别名来标识它:using R=MyProj.Resources.Foo;这仍然会导致问题,因为自动生成器在正确创建ResourceManager时遇到问题

如果我将它命名为FooResx.resx,它不会自动折叠到Foo.cs文件后面。相反,它位于它正下方的解决方案资源管理器中。进入MSBuild.csproj文件并添加标记,然后VisualStudio将我的FooResx.resx文件整齐地折叠起来。但是,我实际上无法使用该文件中的任何资源,因为自动生成的代码在正确创建ResourceManager时存在问题

基本上,有没有办法让资源文件resx折叠到cs文件后面,并使用标准的定制工具ResXFileCodeGenerator正常工作

我意识到我可以将所有资源放在properties文件夹中的一个文件中:resources.resx。不过,我正努力把它们组织得更好

更新:


我决定手动编辑自动生成的代码并使其成为部分代码。这允许代码进行编译,但我仍然遇到了相同的问题2。如果一个资源文件手动或自动折叠到另一个代码文件后面,则ResourceManager很难找到*.resource文件。这可能是我必须向Microsoft Connect提出的关于ResXFileCodeGenerator工具的问题。当折叠到其他文件后面时,它需要能够找到适当的*.resource文件。

解决方案可能是使您的类和生成的代码成为部分类-例如,如果您从System.Windows.Forms.Form查看.Designer.cs,您会发现它声明了类似于部分类Foo的内容

Foo.cs

Foo.Designer.cs

编辑

事实证明,StronglyTypedResourceBuilder或PublicResXFileCodeGenerator坚持使用内部或公共访问修饰符生成类,可以在.resx中设置


在.resx的属性中将ResXFileCodeGenerator设置为CustomTool仍然无法提供在表单的生成.Desinger.cs中看到的行为。

解决方案可能是使类和生成的代码成为部分类-例如,如果您从System.Windows.Forms.Form查看.Designer.cs,您将看到发现它声明了类似于部分类Foo的东西

Foo.cs

Foo.Designer.cs

编辑

事实证明,StronglyTypedResourceBuilder或PublicResXFileCodeGenerator坚持使用内部或公共访问修饰符生成类,可以在.resx中设置


将ResXFileCodeGenerator设置为.resx属性中的CustomTool仍然无法提供在生成的.Desinger.cs表单中看到的行为。

实际上,至少对于自动生成的resx文件,designer类不会生成分部方法。@myermian我只是在添加资源时比较了它的工作方式使用.Designer.cs附带的表单进行布局。无论如何,如果您在Foo.cs中的Foo类被声明为partial,您就可以了。不,生成器工具不会生成partial类,因此,我不能将我的类设置为分部以与之结合。实际上,至少对于自动生成的resx文件,设计器类不会生成分部方法。@myermian我只是将添加资源时的工作方式与使用.designer.cs附带的窗体进行布局时的工作方式进行了比较。无论如何,如果您在Foo.cs中的Foo类被声明为partial,您应该会很好。不,生成器工具不会生成partial类,因此我不能将我的类设置为partial以与之结合。
public partial class Foo
{
}
partial class Foo
{
}