关于csc中"/res"参数的奇怪问题

  由于被要求要写一个make.bat来自动编译整个工程,所以研究了一下CSC。
   因为原来整个工程是用VS.Net的IDE环境来开发的,所以有一些.resx文件,就是窗体的资源文件。这些文件平常没起什么作用,当你在某个窗体中 放了图标、图片文件(比如窗体的Icon属性,ImageList控制等等)之后,VS.Net会对图片内容进行BASE64编码,然后存在对应的. resx文件中。然后在CSC时就应该把这些文件也加进去,查资料得知用resgen可以编译这些资源文件,于是用“resgen frmTest.resx”来得到一个“frmTest.resources”。
  现在假设窗体叫frmTest,对应的cs和resx文件是frmTest.cs,frmTest.resx),再用csc /target:winexe /res:frmtest.resources /out:frmTest.exe frmTest.cs 来编译得到可执行文件。结果运行可执行文件出来就是 “System.Resource.MissingMenifestResoueceException”的异常,明显就是对应的资源文件没能读到。上网 找相关的解决方法,没能找到类似的问题。后来看到一篇文章上看到它读取Resource的源代码是这样的:

System.Resources.ResourceManager resources = new System.Resources.ResourceManager("frmTest",this.GetType().Assembly);

而VS.Net自动生成的是这样:
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(frmTest));

  于是试着把源代码照改了一下,编译,运行,居然通过了!而再改回去就是不对。具体也没看ResourceManager的两个不同构造函数,就先不求甚解一次吧,呵呵。希望有类似问题的朋友能得到启示。

你可能感兴趣的:(res)