我英文不好,中文搜出来的大都只是简单地介绍,最详细的就是下面这个网址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后,提示无法调试脚本代码 函数不正确,不知道哪的问题,可能我忘了以前怎么做的了,也请高手再指导下,谢谢啦!
因为之前没接触过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后,提示无法调试脚本代码 函数不正确,不知道哪的问题,可能我忘了以前怎么做的了,也请高手再指导下,谢谢啦!
第二个,如果你修改的是默认的向导,在common.js里面AddCommonConfig函数里面
var config = oProj.Object.Configurations("Debug");下面加一行
config.DebugSettings.WorkingDirectory = "$(OutDir)";config = oProj.Object.Configurations("Release");下面也加一行如果是自定义向导,找找有个跟这个差不多一样的函数。
另外,你说的第一个问题没重现,是说不需要替换“\\”就能被转换成正确的"\"而非"%255c",还是项目建立后没有提示文件被修改?
如果是前者,是不是我用的是VC2010的问题?
如果是后者,这段代码你是放在哪句后面?我是放在了OnFinish的最后面,记得以前试过放在前面,结果出错,没办法就放到了最后
再次感谢!
最后 项目结构里面就多了一个 a\b 没有转义字符。属性和函数是调试的时候看的
是的,项目里只是多了个名为"a\b"的目录,而我想实现的是"b"目录为"a"目录的子目录,转义字符是在.vcxproj.filters文件里看到的。谢谢回复!
var group_a = oProj.Object.AddFilter("a");
var group_b = group_a.AddFilter("b");
var group_c = group_b.AddFilter("c");
还是这么写吧,免得引起误解