2013-07-20 27 views
2

我试图写一个宏/任何东西来遍历所有项目,并删除其他所有其他构建配置Active Solution Configuration - DebugActive Solution Platform - x86。在编辑所有项目的配置之后,我还想为所有项目设置pre-buildpost-build事件。我不知道从哪里开始。请帮忙。我在解决方案中有44个项目,并且手动设置所有这些项目非常困难且耗时。Visual Studio宏/其他任何东西遍历所有项目和设置项目属性

预生成事件:

rd /s /q "$(ProjectDir)bin" 

后生成事件:

copy "$(TargetPath)" "$(SolutionDir)TOTALOUTPUT\" /y 
+0

您可以查看持续集成套件,如[CruiseControl](http://www.cruisecontrolnet.org/),当您定义要构建的项目时,还可以定义要在批处理文件之前或之后运行的任务,或者PowerShell脚本。 –

+1

这是否必须是一个宏,或者我可以提出一个不涉及宏的替代解决方案来解决您的问题?我认为这个问题适合于另一种解决方案,所以如果不需要宏,我可以为你解决这个问题。如果需要,你应该重新解释你的问题来解释原因。我不希望这是IWidget :: SetColor(http://blogs.msdn.com/b/oldnewthing/archive/2013/02/06/10391383.aspx)的情况。 – user314104

+0

你问这个问题已经9天了,很久以前你可能已经完成了它。发送我的代码问题在这里工作不太好,请考虑一下rentacoder类型的网站。 –

回答

5

我无法清楚地了解你的观点,但让我尝试帮助...

您可以创建clickint建设 - 一个新的配置>配置管理器 - >新建(左上,有活动的解决方案配置,点击它,你会看到新的选项) 名称,并检查你要编译项目

然后简单地去您的解决方案,选择使用Ctrl项目,然后leftclick->属性 VS允许您更改多的属性项目,所以你可以轻松地编写后期构建和预编译事件,它将适用于你选择的所有项目...

1

你可以选择把这个宏,或者没有,但是我真的建议直接去到.csproj和.sln文件。在.csproj的文件,他们有一系列的属性组的指定,像这样的建筑结构:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 

如果您创建一个简单的脚本/程序/ etc中遍历问题所有的.csproj文件,并阅读.csproj xml文件。通过它,你可以简单地确保只有2个PropertyGroups定义配置。这两个配置将是您的调试/发布配置。此外,在同一脚本,您可以将您的前/后生成事件,他们只是不同类型的地产集团,如这样:

<PropertyGroup> 
    <PostBuildEvent>xcopy $(TargetName).* "%25SEARCH1%25"\bin\ /i /y</PostBuildEvent> 
    </PropertyGroup> 

注:这是有可能更好地做到这一点的脚本时Visual Studio被关闭而不是作为一个宏,但我没有看到为什么简单地将它包装到一个宏中是行不通的。

相关问题