AutoCAD.Net/C#.Net QQ群:193522571 Resources.resx资源文件出问题后无法与Resources.Designer.cs放在上下级,怎么办?

相信很多人都遇到过这样的问题,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!

原文地址:https://www.cnblogs.com/swtool/p/13445931.html