① 请教有关VS后期生成事件的问题
不知道你用的哪个版本
我用的专业版默认有这个
② 如何在Visual Studio中利用命令行集成Dotfuscator混淆处理
首先在Visual Studio中打开Dotfuscator:点击菜单栏中的 工具 > PreEmptive Protection - Dotfuscator 打开Dotfuscator。
此处默认新建了Dotfuscator项目,建议先进行保存,将文件保存至你要混淆项目的解决方案文件夹中,如,个人保存的位置为: E:/Projects/OpenSourceProject/ReferenceDoc/Dotfuscator/Samples/DotfuscatorSample/DotfuscatorSample.xml
保存到解决方案文件夹并非必须,此处如此处理可以为了后面进一步处理更加方便。
添加待混淆文件,如图所示:

修改文件路径,将文件路径修改为如下图所示:点击 属性 ,查看 项目属性 - configdir (就是之前的保存位置),然后切换回 输入 ,点击输入中第三个按钮 编辑输入 (那支笔),将路径中与 configdir 匹配的部分替换为 ${configdir} (注意是大括号)。
处理此步骤亦不是必须的,这样处理的原因是为了让我们的配置与本地无关(相对路径),方便其他人合作使用。
至此,基本配置就可以了,点击生成项目就可以进行混淆了。至于其他更多配置见官方文档。
本地可以直接在Dotfuscator工具中点击菜单栏中的 帮助 > 帮助目录 (此为中文文档,基础的配置基本都有)。
帮助文件本地目录参考(中文帮助): C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/zh-Hans
配置Visual Studio命令调用Dotfuscator 主要操作就是编辑生成后事件:右击项目 属性 ,切换到 生成事件 页面,编辑 后期生成事件命令行 ,添加如下代码:
此处为了保证只有在Release的模式下使用混淆,故添加了Release判断。
if $(ConfigurationName)==Release "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml"
代码解释:dotfuscator命令行工具+参数+项目混淆配置文件;其中配置文件之前保存到解决方案文件夹下,故此出可以直接用解决方案文件目录来索引。
代码中唯一不足就是命令行工具使用了绝对路径,vs中的宏参数没有可以直接使用的,若读者有啥好方法将此变为相对路径,望通知。 —— 但关于系统中添加环境变量的法子就不要了,个人不喜。
如果你在此处下一步需要进一步的打包处理,而你又需要Debug模式下一样可以打包测试。如,本人使用WiX打包,需要配置文件路径,方便一点就是要配置为生成路径,但是release模式下,需要将混淆的打包进去,而非直接生成的文件。此时,你不能改打包配置(改路径的话,debug会用不了),所以,你需要在将混淆过的文件拷贝到原来的release生成目录。所以我最后完整的生成事件就是如下代码了:
注意:经测试,如果在Dotfuscator中将生成路径设为文件来源路径,可以生成还会自动覆盖,但软件会用不了,具体原因不明。
if $(ConfigurationName)==Release "C:/Program Files (x86)/Microsoft Visual Studio 14.0/PreEmptive Solutions/Dotfuscator and Analytics Community Edition/dotfuscatorcli.exe" /q "$(SolutionDir)DotfuscatorSample.xml" if $(ConfigurationName)==Release x /e /y "$(SolutionDir)Dotfuscated/*.*" "$(TargetDir)"
代码中的目录可以见Dotfuscator配置的生成目录:
③ vs2010编译出错
代码工程设置属性页里面生成事件加入了自己的cmd命令,而该命令不符合VS生成事件的语法结构,具体你看看生成事件选项里面它设置的是调用那个文件,再打开那个文件看看检查下有什么错误。
④ 如何获得Visual Studio的“发布”功能,包括后生成事件文件
很多时候会想在vs编译的时候自定义一些事情或者动作,
例如:
拷贝生成的文件到特定的目录。
部署程序到测试目录或者环境,例如注册到windows服务,更新GAC等。
根据编译环境生成特定的配置文件(例如web.config) PS: 身在一个复杂环境, 这是我最想要的功能。
自动执行外部exe。
同步DLL和其他资源文件。
1.最简单的自然是用Visual Studio自带的编译事件,这东西使用方便,又是Visual Studio自带的功能,就是功能弱了一点(好吧 其实是很弱)
将项目生成的DLL文件拷贝到特定目录,(如果你想拷贝一整个文件夹 用x; 当然,熟悉命令行的人可以弄出更多的玩法)
如下图所示
2.另外一种比较推荐的方式是自定义编译扩展(可以执行C#代码...功能强大多了), 看下面这个项目文件的最后几句 (项目文件就是 项目名.csproj)
<Import Project="..\..\Build\Tasks\Build.tasks" />
<Target Name="BeforeBuild">
<Message Text="Start Automatic Generate Configuration File, Source File: $(ProjectDir)web.config" Importance="high">
</Message>
<ConfigurationEnvironmentTask TemplateFile="$(ProjectDir)web.template.config" TargetFile="$(ProjectDir)web.config" DataSource="$(EnvironmentName).config" />
</Target>
</Project>
这几句话的意思是
1. 包含一个task文件 (该文件包含了ConfigurationEnvironmentTask 的定义,这是一个自定开发的类,其主要作用是根据环境生成web.config文件)
2.输出一行提示信息 Start Automatic..... (该信息将显示在Output Window)
3. 调用ConfigurationEnvironmentTask 并传入一些参数(TemplateFile 等都是自己定义的参数)
Build.tasks的文件内容其实很简单,主要就是说明了这个task定义在哪里 (Build.dll)
<?xml version="1.0" encoding="utf-8"?>
⑤ vs2008编译成功,生成mt.exe时出错
建议把编译时输出的错误信息全部贴上来,你给的信息太少,大家只能猜
请看看你的项目设置中的“生成事件”下的几个选项中的“命令行”项内容是否正确,把它清空试试
附MSDN解释:
Visual C++ 概念:生成 C/C++ 程序
项目生成错误 PRJ0003
错误消息
生成“command line”时出错。
由“属性页”对话框中的用户输入形成的命令 command line 返回了一个错误代码,但输出窗口中不显示任何信息。
此错误的可能原因为:
项目依赖于 ATL Server。从 Visual Studio 2008 开始,ATL Server 不再包括在 Visual Studio 中,但已在 CodePlex 作为共享源代码项目发布。若要下载 ATL Server 源代码和工具,请转到 http://go.microsoft.com/fwlink/。
系统资源不足。关闭一些应用程序以解决此问题。
没有足够的安全特权。验证是否有足够的安全特权。
VC++ 目录中指定的可执行路径不包括您正尝试运行的工具的路径。
对于生成文件项目,缺少要在“生成命令行”或“重新生成命令行”上运行的命令。
⑥ VS2010 error MSB3073 代码为1
如果你有多个项目,选中你出问题的项目,右键选择属性>配置属性>生成事件>生成后事件,选择“否”
⑦ 求助:vs2008编译错误Project error PRJ0019-CSDN论坛
根本原因是由于VS记录了个相对路径 修改为绝对路径然后再试!
工程->属性->生成事件->生成后事件->命令行 修改哈,或者删除。估计是这里出问题了
⑧ 请问大家一般用visual studio的命令提示符做些什么事呢
手动编译和链接程序.
这个程序作为外部程序,整合到vs上.以前如果接触脚本的话,象python,lua都是通过这种方式挂接到vs上,其程序生成,你仍然可以用命令行方式来控制.
共同点:命令行,这利于进于事务处理.关于它的使用不仅限如此.
在项目属性中,有一个"生成事件"",名称够"事务"了吧,在这里你可以用命令行,对生成后的或是生成前的数据进行操作.这个非常有用.