相信很多人都遇到过这样的问题,Resources.resx出了问题,然后系统给自动重新生成了一个Resources1.resx,然后你又不想用这个自动生成的,于是你删除了Resources1.resx,此时你还想用那个Resources.resx。
而当你把Resources.resx加入到项目中时,Resources.Designer.cs没有自动跟在它下面,于是你又把Resources.Designer.cs加入到项目中。
而此时,它们两个是平级地放在项目中,你手动把它们拖入到Properties下面,但是Resources.Designer.cs怎么也无法拖到Resources.resx下面一级。
1.关闭VS,用记事本打开你的项目文件,xxx.csproj文件;
2.ctl+f,搜索AssemblyInfo.cs,找到此行 <Compile Include="PropertiesAssemblyInfo.cs" />;
3.在其下面加入下面的几行:
<Compile Include="PropertiesResources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
这样打开后,你会发现搞定了:
而有时候你会发现,即使放到下面一级去了,你还是不能将它们两个关联起来,这又是什么原因呢?
可能是:你的Resources.resx的自定义工具是空的,这就是你人为修改了此文件后造成它为空的。
你需要把在这个地方输入:ResXFileCodeGenerator
此时会出现一个resources1.designer.cs文件,你需要保存VS后,用记事本修改csproj文件,把1去掉,当然你得先删除那个resources.designer.cs文件了。
然而,你发现,仍然有问题,还需要复制这个到里面去:
<EmbeddedResource Include="PropertiesResources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
然而,复制完了,你发现还他妈的有问题,什么问题呢?
就是
“Resources”不可访问,因为它具有一定的保护级别
其实,这个时候实际上已经是好了,只是好像它还没有缓过来。
我是弄了好久,搞不定,重新打开VS,也不行。
我重新编译,也通过了,然而还是依然。
最后,我在Resources.resx中手动加了一个图形,加入后,居然神奇般好了!
shit!