在我们的构建过程中,对于每个项目,我们使用PostBuild事件将可执行文件复制到单独的部署目录中。但问题是,我们遇到的问题与陈旧的文件后,执行一个清洁解决方案/清洁项目。我想建立一个“清洁”事件删除复制的文件,而Visual Studio 2008似乎没有在项目属性页中提供选项。
它有:
Build Events:
Pre-Build Event
Pre-Link Event
Post-Build Event
Custom Build Step
General
字符串
我想找到的是在清理项目时执行任意命令行的方法。
7条答案
按热度按时间lztngnrs1#
您可以在csproj文件中使用MSBuild目标语法。
字符串
在MSBuild团队博客中描述了一种直接在Visual Studio IDE中编辑.csproj文件的简洁方法,但这是我的第一篇文章,所以我只能包含一个超链接。(简单地说:卸载项目,然后右键单击它以查看条目“Edit [project].csproj”.您的csproj将在IDE中以xml文件的形式出现,并对元素和属性进行智能感知。太棒了!)
自定义目标的完整列表是here。
tzcvj98z2#
对于Visual C++项目,您需要将文件添加到“General”项目配置属性下的“Extensions to Delete On Clean”部分。尽管它声称需要扩展,但实际上它使用的是globs,并且很乐意接受完整路径并扩展MSBuild变量。这对我很有效:
第一个月
我不确定你是否可以用这种方式删除目录,但它至少可以获取文件。
bxjv4tth3#
如果你使用“项目属性-->配置属性-->自定义构建设置”,你必须记住填写“输出”字段,否则它不会运行。
发件人:
http://blogs.msdn.com/b/visualstudio/archive/2010/04/26/custom-build-steps-tools-and-events.aspx
“Outputs属性是一个以分号分隔的文件列表,并且必须列出在执行自定义生成步骤时生成的任何文件。如果将Outputs属性留空,则自定义生成步骤将永远不会执行,因为MSBuild将确定没有任何输出过期。如果步骤不生成文件,但仍希望它在每次生成时执行,编造一个假的文件名就可以了,因为那个文件永远不会存在,MSBuild总是会确定自定义构建步骤已经过时。
czfnxgou4#
您需要手动编辑.csproj文件并添加“AfterClean”目标。
cnwbcb6i5#
不幸的是,没有一种文档化的方法可以插入自定义的清理步骤。您可以在预生成事件中清理输出,但在清理之后仍然会留下工件。
在MSDN中,以下是各个生成步骤的调用顺序:
1.建置前事件
1.对单个文件自定义生成步骤
1.代理生成器
1.资源编译器
1.预链接事件
1.链接器或库管理器(如适用)
1.项目上的自定义生成步骤
1.部署工具。
1.生成后事件
MSDN:Understanding custom build steps
f5emj3cl6#
其他人没有完全按照我的要求做,我只是找到了一个更好的方法。在VS2010中测试了C++ Win32项目,转到项目属性-->配置属性-->自定义构建设置。你可以添加一个自定义命令行,并告诉VS在命令之前或之后执行什么操作。
bn31dyow7#
也许这在当时(VS 2008/ .NET 3.5)是不可用的,但它现在对我来说工作得很好(VS 2022专业版).这个例子是在清理之前停止并删除一个名为
Service1
的Windows服务(这将删除可执行文件,并导致之后操作服务数据库的困难),但任何cmd命令都可以在这里使用。字符串