导航:首页 > 程序命令 > 生成事件命令行

生成事件命令行

发布时间:2022-08-21 12:26:25

1. 如何在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配置的生成目录:

2. 如何:指定预先生成和后期生成命令行

更新:2007 年 11 月如果必须在生成和部署数据库项目之前或之后执行操作,可以通过指定预先生成或后期生成命令行来执行这些操作。可以通过使用项目属性来指定这些命令行。例如,在以下情况下可以使用预先生成或后期生成命令行:(预先生成)将 .sql 文件从 SQLCLR 项目复制到架构对象中,以便数据库项目和 SQLCLR 项目同步。(后期生成)实现生成结果、压缩生成结果或者运行 XSD.EXE 以更新 DataSet 类。指定预先生成命令行在“解决方案资源管理器”中,右击要为其指定预先生成命令行的数据库项目,再单击“属性”。在“项目属性”窗口中单击“生成事件”选项卡。执行下列操作之一:如果已知要执行的命令行,请在“预先生成事件命令行”中键入要在生成数据库项目之前执行的命令行,然后转到步骤 5。如果要使用生成宏,请单击“编辑预先生成事件”。在“预先生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。在完成命令行的编辑之后,请单击“确定”。在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之前执行。指定后期生成命令行在“解决方案资源管理器”中,右击要为其指定后期生成命令行的数据库项目,再单击“属性”。在“项目属性”窗口中单击“生成事件”选项卡。执行下列操作之一:如果知道要执行的命令行,请在“后期生成事件命令行”中键入数据库项目生成后要执行的命令行,然后转到步骤 5。如果要使用生成宏,请单击“编辑后期生成事件”。在“后期生成事件命令行”对话框中,键入要执行的命令行。可以单击列表中的宏并单击“插入”将其插入到命令行中。在完成命令行的编辑之后,请单击“确定”。如果希望仅在生成成功时才运行命令行,请在“运行后期生成事件”列表中,单击“成功生成时”。如果希望命令行总是运行(即使生成失败时),请在“运行后期生成事件”列表中,单击“总是”。在“文件”菜单上,单击“保存选定项”保存对项目属性进行的更改。下次生成数据库项目时,该命令行将在生成数据库项目之后执行。请参见任务如何:准备数据库生成脚本如何:将更改部署到新数据库或现有数据库概念数据库项目设置概述参考预生成事件/生成后事件命令行对话框 (Database Edition)

3. 如何使用cudaMallocPitch和cudaMemcpy2D

有时候,我们需要在比较大的项目中调用CUDA,这就涉及到MFC+CUDA的环境配置问题,以矩阵相乘为例,在MFC中调用CUDA程序。我们参考罗振东[email protected](国防科学技术大学计算机学院)的方法。

环境: Windows 7 SP1
Microsoft Visual Studio 2010
CUDA 5.0

步骤:

1.首先建立一个空的名叫Matrix Multiplication_KahanMFC的“FCM应用程序”项目:

点击“确定”,这时弹出如下窗口

我们需要对默认项目进行一些修改,点击“下一步”,我们设置一个空的MFC项目,选择“单个文档”和“MFC标准”:

点击“完成”。
2.创建CUDA的调用接口函数及其头文件
(1)头文件
“添加”--> “新建项”-->“Visual C++”-->“头文件(.h)”-->“名称”-->“CUDA_Transfer.h” -->“添加”,如下图:

在CUDA_Transfer.h中添加如下代码:
//CUDA_Transfer.h

#include
#include "math.h"

using namespace std;

int run_cuda(float* GPU, float* CPU);
如下图所示:

(2)函数
按照和增加头文件相似的方法,添加函数。“添加”--> “新建项”-->“Visual C++”-->“C++文件(.cpp)” -->“名称”-->“CUDA_Transfer.cpp” -->“添加”,如下图:

在CUDA_Transfer.cpp中添加如下代码:
//CUDA_Transfer.cpp
#include "CUDA_Transfer.h"
#include "stdafx.h"

extern "C" int runtest(float* GPU, float* CPU);

int run_cuda(float* GPU, float* CPU)
{
runtest(GPU,CPU);
return 0;
}
如下图所示:

需要注意的是在MFC的文件中是不能包含(include).cu文件的,会报错,所以我们使用extern "C"的方式来实现函数的调用。
3. 创建存放cuda 代码的筛选器,名为CUDA
“添加”--> “新建筛选器”,重命名为CUDA

4. 在筛选器CUDA中创建一个CUDA源代码文件,kernel.cu。
我们直接把已经写好的矩阵相乘的程序kernel.cu复制到项目目录下,添加到CUDA筛选器中去。
添加”--> “现有项”-->“kernel.cu”--> “添加”:

把kernel.cu的int main()函数改为extern "C" int runtest(float* GPU, float* CPU),两个参数用来获得GPU和CPU计算所使用的时间,单位为毫秒。
5. 右击项目-->“生成自定义”:

在弹出的窗口中勾选CUDA 5.0(.target,.props)。如果使用其他版本的CUDA,就勾选对应的版本:

点击“确定”。
6. 修改 kernel.cu的编译链接设置
在解决方案资源管理器中右击kernel.cu文件-->“属性”,在弹出窗口中-->“常规”-->“项类型”的下拉列表中选择

点击“应用”后,“常规”下方会出现一个“CUDA C/C++”的设置,没有特殊需求,不需要修改,点击“确定”。

7.修改工程设置。

工程设置需要修改“链接器”-->“输入”-->“附加依赖项”和“生成事件”-->“预先生成事件”-->“命令行”。需要设置的参数比较多,我们采用比较简单的方法。

我们新建一个空的CUDA项目,在这个空CUDA项目的项目属性中找到“链接器”-->“输入”-->“附加依赖项”,把“附加依赖项”中所包含的项复制到我们的MFC项目中:

按照同样的方法,设置“生成事件”-->“预先生成事件”-->“命令行”:

设置完成后,点击“确定”。
8.修改MFC文件,完成调用。
我们需要在MFC中调用CUDA程序,显示出GPU和CPU计算两个1024*1024矩阵相乘所消耗的时间。
在Matrix Multiplication_KahanMFCView.cpp中包含(include)"CUDA_Transfer.h"
文件;在CMatrixMultiplication_KahanMFCView::OnDraw(CDC* pDC)中添加如下代码:

float GPU;
float CPU;
run_cuda(&GPU, &CPU);

CString strGPU,strCPU;
strGPU.Format(_T("GPU:%f \n"),GPU);
strCPU.Format(_T("CPU:%f \n"),CPU);
pDC->TextOut(0,0,strGPU);
pDC->TextOut(0,30,strCPU);

如图所示:

然后重新生成解决方案,运行。
计算要花费一些时间,需要等待,测试的时候可以把矩阵大小改小一些。因为把程序加到了OnDraw中,所以每当刷新窗口时候(例如调整窗口大小时),都会调用。由于计算耗时比较长,窗口看起来会像无响应一样,等计算完成就好了。
运行的结果如下:

在矩阵比较大的情况下,GPU的加速效果明显,GPU耗时只需要620ms,而CPU需要23438ms,要花费将近40倍的时间。

4. 请问大家一般用visual studio的命令提示符做些什么事呢

手动编译和链接程序.
这个程序作为外部程序,整合到vs上.以前如果接触脚本的话,象python,lua都是通过这种方式挂接到vs上,其程序生成,你仍然可以用命令行方式来控制.

共同点:命令行,这利于进于事务处理.关于它的使用不仅限如此.
在项目属性中,有一个"生成事件"",名称够"事务"了吧,在这里你可以用命令行,对生成后的或是生成前的数据进行操作.这个非常有用.

5. 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++ 目录中指定的可执行路径不包括您正尝试运行的工具的路径。

对于生成文件项目,缺少要在“生成命令行”或“重新生成命令行”上运行的命令。

6. 如何:预生成视图以改善查询性能(实体框架)

实体框架 在第一次执行查询时生成视图,然后在 ObjectContext 实例的生存期内维护这些视图。视图生成是执行单个查询的总开销的重要部分,因此 实体框架 让您可以预生成这些视图并在已编译项目中包含这些视图。除了生成和验证 EDM 映射和模型文件之外,EDM 生成器 (EdmGen.exe) 工具还用于预生成这些视图。本主题演示如何使用 EdmGen.exe 预生成 School 模型的视图,并将视图文件添加到项目。School 模型是在 实体框架 快速入门中创建的。最后的过程向您演示如何将模型和映射文件作为嵌入的资源重新添加到一个 ASP.NET Web 应用程序。注意本主题中的过程使用 Visual Studio 中的生成前和生成后事件,在 ASP.NET 网站中不支持这些事件。若要为 ASP.NET 网站所使用的一个 EDM 预生成视图,应在单独的类库中创建该 EDM,对该类库项目使用下面的过程,并在 ASP.NET 网站项目中引用该类库项目。或者,可考虑使用 ASP.NET Web 应用程序项目而不是 ASP.NET 网站。这使您可以通过使用本主题中的过程,在与 ASP.NET Web 应用程序相同的项目中包含预生成的视图。预生成的视图在运行时进行验证,以确保这些视图与当前版本的 EDM 保持一致。此过程确保这些视图与 EDM 匹配。如果生成过程正在输出目录中生成模型和映射文件,则可以跳过第一个过程。本主题中的过程使用 School 模型。可以通过完成快速入门(实体框架) 生成此模型。注意执行本主题中的过程需要 Visual Studio 2008 Service Pack 1 (SP1)。在输出目录中生成 School 模型的模型和映射文件在“解决方案资源管理器”中,双击 School.edmx 文件。这会在“实体设计器”中显示 School 模型。在“模型浏览器”中,选择 SchoolModel 模型并将“元数据项目处理”更改为“复制到输出目录”。这可确保在输出目录中生成模型和映射文件。生成解决方案。这会在输出目录中生成模型和映射文件。向Visual Basic 项目添加视图生成在“解决方案资源管理器”中,选择要为其指定生成事件的项目。在“项目”菜单上,单击“项目属性”。在“属性”页中,单击“编译”选项卡。单击“生成事件”按钮。在“生成事件”对话框中,添加下面的预生成事件(无换行符): "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb" 单击“确定”。关闭“项目属性”页。生成解决方案。这将生成视图文件 School.Views.cs。在“解决方案资源管理器”中右键单击项目名称,并选择“添加现有项”。在“添加现有项”对话框中,导航至项目的根文件夹并选择 School.Views.vb 文件。单击“添加”。生成解决方案。向C# 项目添加视图生成在“解决方案资源管理器”中,选择要为其指定生成事件的项目。在“项目”菜单上,单击“属性”。选择“生成事件”选项卡。在“预生成事件命令行”窗口中,添加下面的预生成事件(无换行符): "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs" 生成解决方案。这将生成视图文件 School.Views.cs。在“解决方案资源管理器”中右键单击项目名称,并选择“添加现有项”。出现“添加现有项”对话框。导航至项目的根文件夹并选择 School.Views.cs 文件。单击“添加”。生成解决方案。将映射和模型文件重新添加为 ASP.NET 项目的嵌入资源在“项目”菜单上单击“添加现有项”。浏览至项目的输出目录,选择 School.csdl,然后单击“确定”。在“解决方案资源管理器”中选择添加的文件。在“属性”中,将“生成操作”设置为“嵌入的资源”。对School.ssdl 文件和 School.msl 文件重复步骤 1 至 3。在“解决方案资源管理器”中,双击 App.config 文件,然后基于以下任一格式修改 connectionString 属性中的 Metadata 参数:Metadata=res:///;Metadata=res://*/;Metadata=res://*;resourceName 可以包括项目命名空间。有关更多信息,请参见连接字符串(实体框架)。

7. 求c语言高手解答,解决问题后有高分,学生选课管理系统

在“解决方案资源管理器中”鼠标右键单击工程,然后选择“属性”-》“生成事件”-》“生成后事件”,
你修改里面的“命令行”即可

阅读全文

与生成事件命令行相关的资料

热点内容
京东java算法笔试题 浏览:172
柱子加密箍筋不准有接头 浏览:195
我的世界服务器菜单插件如何使用 浏览:10
刘毅10000词pdf 浏览:888
刚毕业的程序员会什么 浏览:972
单片机控制64路开关量 浏览:980
win10截图编程 浏览:418
怎样把名字变成文件夹 浏览:201
文件怎么搞成文件夹 浏览:728
多线程编程php 浏览:604
安卓机越用越卡有什么办法 浏览:15
高中生解压操场适合做的游戏 浏览:393
程序员java招聘 浏览:458
未来之光手机云服务器 浏览:158
服务器下载资料为什么c盘满了 浏览:263
怎么清除空文件夹 浏览:544
如何查看派派服务器 浏览:802
杀手6解压画面 浏览:669
夸张程序员 浏览:467
如何直播切两个APP画面 浏览:784