• 关于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的两个不同构造函数,就先不求甚解一次吧,呵呵。希望有类似问题的朋友能得到启示。

  • 相关阅读:
    问题 E: C#判断回文字符串
    hdu 1130 How Many Trees? 【卡特兰数】
    The writing on the wall
    字典树的应用
    完全背包
    多重背包
    hdu 2191 【背包问题】
    最长上升子序列 and 最长公共子序列 问题模板
    hdu 4704 Sum 【费马小定理】
    费马小定理
  • 原文地址:https://www.cnblogs.com/wonderow/p/63831.html
Copyright © 2020-2023  润新知