none
VC2010自定义向导所使用的代码有没有说明文档? RRS feed

  • 问题

  • 我英文不好,中文搜出来的大都只是简单地介绍,最详细的就是下面这个网址http://blog.chinaunix.net/space.php?uid=12454074&do=blog&id=2935191

    因为之前没接触过js,这类帖子大都看得云里雾里,希望有像“MFC中文详解”那样的文档,类得函数和属性怎么用一目了然。

    现在同时建立几个项目,基本都要做重复的设置,大都在Microsoft.Cpp.Win32.user.props里设置了,但仍有无法解决的,在这提出希望高手帮忙解决,先谢了!

    1、我习惯在解决方案里添加几个子目录,比如“头文件”下添加“输出头文件”,我在default.js里添加如下代码:

      var L_strHeader_Text = "头文件\\输出头文件";
      group = selProj.Object.AddFilter(L_strHeader_Text);

    但结果是“\\”被转换成了"%255c",试了很多方法无法得到'\',最后采用了个笨办法,读取文件然后替换,又添加了下面的代码:

      var stream, s, path;
      path = strProjectPath + "\\" + strProjectName + ".vcxproj.filters";
      stream = new ActiveXObject("ADODB.Stream");
      stream.Mode = 3;
      stream.Type = 2;
      stream.Open();
      stream.Charset = "UTF-8";
      stream.LoadFromFile(path);
      s = stream.ReadText();
      s = s.replace(/\%255c/g, "\\");
      stream.Close();
      stream.Open();
      stream.WriteText(s);
      stream.SaveToFile(path, 2);
      delete stream;
      stream = null;

    此方法虽然实现了我的想法,但每次新建项目都会提示一次文件被修改,请问有没有更简单的实现方法?

    2、我习惯修改调试里的工作目录为$(OutDir),发现他被保存在.vcxproj.user文件里,也想通过上面的笨办法直接修改文件,参考了common.js部分代码,但失败了,代码如下:

      path = strProjectPath + "\\" + strProjectName + ".vcxproj.user";
      stream = new ActiveXObject("ADODB.Stream");
      stream.Mode = 3;
      stream.Type = 2;
      stream.Open();
      stream.Charset = "UTF-8";
      stream.LoadFromFile(path);
      stream.WriteLine("<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">");
      stream.WriteLine("  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">");
      stream.WriteLine("    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>");
      stream.WriteLine("    <LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>");
      stream.WriteLine("  </PropertyGroup>");
      stream.WriteLine("  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">");
      stream.WriteLine("    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>");
      stream.WriteLine("    <LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>");
      stream.WriteLine("  </PropertyGroup>");
      stream.WriteLine("</Project>");
      stream.Close();
      delete stream;
      stream = null;

    VC2010会出错关闭,后又按common.js里的代码重新写了遍,代码如下:

      path = strProjectPath + "\\" + strProjectName + ".vcxproj.user";
      var oFSO;
      oFSO = new ActiveXObject("Scripting.FileSystemObject");
      stream = oFSO.CreateTextFile(path, true);
      EnsureDevicePlatforms();
      stream.WriteLine("<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">");
      stream.WriteLine("  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">");
      stream.WriteLine("    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>");
      stream.WriteLine("    <LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>");
      stream.WriteLine("  </PropertyGroup>");
      stream.WriteLine("  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">");
      stream.WriteLine("    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>");
      stream.WriteLine("    <LocalDebuggerWorkingDirectory>$(OutDir)</LocalDebuggerWorkingDirectory>");
      stream.WriteLine("  </PropertyGroup>");
      stream.WriteLine("</Project>");

      stream.Close();
      delete stream;
      stream = null;

    这次新建项目没有出错,但是.vcxproj.user还是默认生成的,内容没有改变,我搜索VC文件夹,没找到.vcxproj.user是怎么生成的,网上也搜不到,请问有没有高手了解?

    3、我使用VC2010的自定义向导,创建的上述文件,很久以前还能调试,但这次修改后,无法调试,禁用脚本调试也取消了,附加进程到devenv.exe后,提示无法调试脚本代码 函数不正确,不知道哪的问题,可能我忘了以前怎么做的了,也请高手再指导下,谢谢啦!

    2012年1月29日 5:37