对于小型社区讨论,您使用的Visual Studio宏是什么?
我刚刚开始了解它们,并希望听到你们中的一些人不能没有.
我在XAML开发中广泛使用宏来查看ViewModel属性.我在WCF中更多地使用它们来生成Message和DataContract属性.
令我失望的是,我构建的宏在Visual Studio 2012中无法使用.
我正在谈论的一个例子,对于VM,我会输入这样的东西.
int id;
string name;
Run Code Online (Sandbox Code Playgroud)
选择两行,运行宏并最终结束
private int _id;
private string _name;
public int Id
{
get {return _id;}
set
{
if(_id != value)
{
_id = value;
RaisePropertyChanged("Id");
}
}
public string Name
{
if(_name != value)
{
_name = value;
RaisePropertyChanged("Name");
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找其他解决丢失宏的解决方案的想法.
编辑:Visual Studio 2015的新异常窗口比旧对话框快得多,我不再关心使用它的键盘快捷方式.
是否有一个宏或键盘快捷方式,可以在不使用GUI的情况下切换"在抛出异常时中断"?
使用ctrl + alt + e打开对话框并检查"公共语言运行时异常""抛出"框然后单击"确定"很简单,但这是我做了很多事情.我宁愿有一个键盘快捷键.
这个问题是一个副本 任何有一个Visual Studio快捷方式/宏来切换处理/未处理的异常中断?
然而,海报接受的答案并没有真正的工作,我也很喜欢那个答案不工作.
重复问题中的答案是不可接受的,因为它只切换一个特定的异常,而不是整个CLR组.
"好吧,然后写一个循环." 你说.但不是那么快!有人已经尝试过,而且它无用缓慢.(是的,我已经证实它在我的系统上也很慢.)
因此,挑战在于使用宏来在不到1秒或2秒的时间内切换整个CLR例外类别.这个问题是一个副本 任何有一个Visual Studio快捷方式/宏来切换处理/未处理的异常中断?
是否有键盘快捷键或宏来折叠Visual Studio工具箱中的所有区域?(没有其中任何一个,我会接受一个允许这个的插件!)
我做了很多谷歌搜索,以获得如何使用或开始在VBA中使用正则表达式的正确答案.
最后我明白了,所以我想和你们分享我的知识.如果我错了,请纠正我.
下面的C++代码编译并作为GCC上的程序员工作(4.0.4)
#define FOO(x,y,z) ((x)*(y)*(z))
#define BAR(x) FOO(x,1)
#define BAZ 3,7
int main()
{
return BAR(BAZ); /* interpreted as return ((3)*(7)*(1)); */
}
Run Code Online (Sandbox Code Playgroud)
但是,宏在Microsoft Visual C++ Express 2010上导致错误:
main.cpp(7):警告C4003:宏'
FOO'main.cpp(7)的实际参数不够:错误C2059:语法错误:')'
问题似乎是Microsoft编译器在内部处理BAR宏时,不会将BAZ宏扩展为可用作宏FOO的两个独立参数的参数.
根据标准,哪个编译器正确处理了这种情况?
Visual Studio中有宏象$(TargetDirectory)
,$(OutputPath)
等等.
在我的源代码,我想从一个文件夹指定一个文件的加载相对路径下面几级TargetDirectory
.
目前我正在这样做:mLayer = mEngine->AddLayer("D:\\Projects\\abc.osg");
我希望它是这样的mLayer = mEngine->AddLayer(($TargetDirectory)+"..\\..\\abc.osg");
这只是一个临时要求,因此我可以将我的代码提供给一个人进行小型演示,并且他的TargetDirectory与我的目录不同.有没有办法在源代码中使用Visual Studio宏?(至少我知道可以访问系统环境变量)
我想在特定时间(变更集)获取项目的源代码.所以我需要下载整个文件夹.我想在不同的时间做这件事并且处理不同的工作空间不是很方便.
我知道TFS获取特定版本到单独的文件夹(带工作空间)和Need命令从TFS获取文件而没有工作空间(一个文件).
没有创建新工作区,是否有整个文件夹的解决方案?
编辑 我发现接受的答案太雄心勃勃了.我需要更简单的东西.
假设:
ChangeSetNumber
从DesiredFolder
TFS项目中的文件夹中获取Changeset
tProj
我从Visual Studio命令提示符中的目标文件夹运行以下批处理
set workspace_name=TemporaryWorkspace%username%
set changeset= ChangeSetNumber
tf workspace -new %workspace_name% -noprompt
tf workfold -map $/tProj . -workspace:%workspace_name%
tf get $/tProj/DesiredFolder -version:C%changeset% -recursive -noprompt
tf workfold -unmap . -workspace:%workspace_name%
tf workspace -delete %workspace_name% -noprompt
Run Code Online (Sandbox Code Playgroud)
启动下载的解决方案时,必须确认删除源控制关联.
如何执行有条件的构建后事件?具体来说,我只想为调试版本执行post-build事件命令行,而不是为发布版本执行.
我没有在项目的属性"构建事件"页面中看到任何方式.
macros post-build-event visual-studio-macros visual-studio-2012
我之前问过: 添加对visual studio宏的dll引用
用我的语言(C#)创建宏的想法使得创建宏更容易.问题是我无法调试dll
为了解决我试过的问题:
我myClassLibrary.pdb
接下来myClassLibrary.dll
希望我可以通过步入它们来调试dll中的方法.
创建了WCF服务.因为我不知道如何从vba引用服务,所以我从类库中引用它.问题是我需要使用变量,例如DTE.ActiveDocument
,这些变量不可序列化,这意味着我无法将它们传递给wcf服务.
在C#中工作的想法非常好但是无法调试并且看到发生了什么使得它有点困难.我可能不得不转到我的旧选项,我在C#上创建了我的代码然后用反射器反编译成vba.
我想我已经接近了解决方案.我想为什么不在控制台应用程序中创建宏?我能够获取活动文档文本但无法更改它.
EnvDTE80.DTE2 MyDte;
MyDte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject( "VisualStudio.DTE.10.0" );
Console.WriteLine( "The Edition is " + MyDte.Edition );
Console.ReadLine( );
// write to the console the text that is selected. "sometimes it does not work don't know why"
Console.WriteLine(
MyDte.ActiveDocument.Selection.Text
);
Run Code Online (Sandbox Code Playgroud)
注意我添加了以下引用加上vba宏具有的onces: