`
pcajax
  • 浏览: 2204883 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

移动项目开发笔记(管理不同解决方案下的DLL文件相互引用之心得体会)

阅读更多
 当项目比较庞大时候Dll文件的管理显得就尤其重要了,比如多个解决方案有不同项目之间的引用,如果引用的路径都指向某项目bin下的dll文件的话,dll维护起来很不方面,因此遇到这种情况的话该怎么更好的管理这些DLL文件呢?最近进行中移动项目就属于这种情况,项目中有三个解决方案,每个解决方案下有多个项目,并且每个解决方案的不同项目又有引用。而且又引用了外部的一些Com组件,当一个项目代码发生变化时候,其他项目引用该dll文件是否已经更新是经常需要考虑的问题,而且这样当出现bug时候也很难确定是否是DLL版本更新问题。另外不但这样的DLL文件管理很麻烦,而且很可能导致dll文件版本不正确引起莫名奇妙的问题。

     目前这个项目进行到了最后阶段,对这个项目进行了重构,所以对项目的DLL文件的管理进行了整理,整理过程中有一些新的体会和朋友们分享。而且也学习了关于Post-build event command line事件即(生成后事件)的用法,感觉用Post-build event command line不失为管理DLL一种方法。个人感觉这种方法比较实用,先分享出来供朋友们参考,希望朋友们能提出宝贵的意见。

总述当多个解决方案互相有引用DLL关系时,可以统一建立一个ReferenceLib文件夹,所有项目引用外来的DLL(非本解决方案)都引用该ReferenceLib文件夹下的,里面存放所有已经编译好的其他解决方案的DLL,一旦引用外部的DLL,那么在项目中引用的地方将显示路径,而在同一个解决方案下的不同项目将直接引用项目即可。

现在的问题就是当项目下有更新时候,如果把更新的dll文件从项目下拷贝到专门用于dll文件管理的ReferenceLib文件夹下呢?也就是说当项目编译的时候就执行拷贝操作,这样就用到了上面说到的Post-build event command line编译生成后事件。

在编译某工程时将DLL拷贝到指定的文件夹下,便于及时引用新的DLL。在Build Events----->post build event command line中写命令

语法是:copy "路径1" "路径2"

注:路径1代表要从哪儿拷贝的路径,即相当于"From"

路径2代表文件拷贝到哪儿去,即相当于"To"

下面是一些例子用法理解这种语法格式

     copy "$(SolutionDir)configuration\*.xml" "C:\CharlesChen" 

    copy "$(SolutionDir)configuration\*.configuration" "C:\CharlesChen"

    copy "$(SolutionDir)configuration\*.config" "C:\CharlesChen"

    copy "$(SolutionDir)configuration\Icon\*.config" "C:\CharlesChen" 
    copy "$(SolutionDir).."reference\database.config" "C:\CharlesChen"

    copy "$(SolutionDir).."reference\Images\open.gif" "C:\CharlesChen"

注意:

    1.$(SolutionDir) 表示该解决方案,  "$(SolutionDir)configuration " 该解决方案下有文件configuration.

    2."*.xml" 表该文件下后缀为"xml"的文件.

3."$(SolutionDir)..\reference\" 表示和该解决方案同级有文件 reference.

Copy "$(ProjectDir)bin\Debug\*.*" "$(ProjectDir)..\References"   即把当前项目目录下的Bin\Debug文件夹下的所有文件拷贝到和当前项目同级的References文件夹下

 

上面用到了"$(SolutionDir)"这种表示路径的方式,这是VS能自动识别的。当然不只是这一个,通过查看MSDN还有其他预定义的路径表示方法:具体可参见MSDN,这里我把它复制下来:

具体可参见MSDN:http://msdn.microsoft.com/zh-cn/library/42x5kfw4(VS.80).aspx

宏  说明 
$(ConfigurationName)
 当前项目配置的名称(例如,“Debug|Any CPU”)。
 
$(OutDir)
 输出文件目录的路径,相对于项目目录。这解析为“输出目录”属性的值。它包括尾部的反斜杠“\”。
 
$(DevEnvDir)
 Visual Studio 2005 的安装目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
 
$(PlatformName)
 当前目标平台的名称。例如“AnyCPU”。
 
$(ProjectDir)
 项目的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
 
$(ProjectPath)
 项目的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。
 
$(ProjectName)
 项目的基本名称。
 
$(ProjectFileName)
 项目的文件名(定义为基本名称 + 文件扩展名)。
 
$(ProjectExt)
 项目的文件扩展名。它在文件扩展名的前面包括“.”。
 
$(SolutionDir)
 解决方案的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
 
$(SolutionPath)
 解决方案的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。
 
$(SolutionName)
 解决方案的基本名称。
 
$(SolutionFileName)
 解决方案的文件名(定义为基本名称 + 文件扩展名)。
 
$(SolutionExt)
 解决方案的文件扩展名。它在文件扩展名的前面包括“.”。
 
$(TargetDir)
 生成的主输出文件的目录(定义为驱动器 + 路径)。它包括尾部的反斜杠“\”。
 
$(TargetPath)
 生成的主输出文件的绝对路径名(定义为驱动器 + 路径 + 基本名称 + 文件扩展名)。
 
$(TargetName)
 生成的主输出文件的基本名称。
 
$(TargetFileName)
 生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。
 
$(TargetExt)
 生成的主输出文件的文件扩展名。它在文件扩展名的前面包括“.”。
 
 

<script type="text/javascript"> if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 33180; var cb_entryId = 1297551; var cb_blogApp = "Charles2008"; var cb_blogUserGuid = "908d3d0b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2008/9/24 11:38:00'; </script>
分享到:
评论

相关推荐

    使用VC和MATCOM结合开发应用程序心得笔记

    ### 使用VC和MATCOM结合开发应用程序心得笔记 #### 1. 什么是Matcom? Matcom是由MathTools公司(UPenn)开发的一款强大的基于C++的矩阵函数库,它能够实现Matlab `.m` 文件到 `.cpp` 文件的转换。这款工具不仅支持...

    GE 烟草行业解决方案.pdf

    GE 烟草行业解决方案.pdf

    matlab的figure窗口记录,保存成视频或gif格式图片,代码

    matlab的figure窗口记录,保存成视频或gif格式图片,代码

    毕业论文-PHP短网址生成系统-整站商业源码.zip

    毕业论文-PHP短网址生成系统-整站商业源码.zip

    GibbsCAM2006图素绘制.pdf

    GibbsCAM2006图素绘制.pdf

    spring-context-support-5.3.15.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    毕业论文-乘风_图床源码 多接口-整站商业源码.zip

    毕业论文-乘风_图床源码 多接口-整站商业源码.zip

    毕业论文-活动报名小程序-整站商业源码.zip

    毕业论文-活动报名小程序-整站商业源码.zip

    毕业论文-【超人】积分商城 superman_creditmall 4.6.17 安装更新一体包-整站商业源码.zip

    毕业论文-【超人】积分商城 superman_creditmall 4.6.17 安装更新一体包-整站商业源码.zip

    arrow-format-0.8.0.jar中文文档.zip

    # 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    IDC机房及设备的相关介绍.pdf

    IDC机房及设备的相关介绍.pdf

    毕业论文-网址导航大全主题风格模板-整站商业源码.zip

    毕业论文-网址导航大全主题风格模板-整站商业源码.zip

    【电子设计竞赛】单相在线式不间断电源设计与实现:性能参数及测试要求详解

    内容概要:本文档是关于2020年TI杯大学生电子设计竞赛中的单相在线式不间断电源(UPS)设计任务。文档详细列出了设计并制作交流正弦波在线式不间断电源的具体要求,包括交流供电下的输出电压、电流、频率精度,负载和电压调整率,输出波形质量,以及从交流供电到直流供电的即时切换能力。同时,对直流供电下的效率优化提出了要求。文档还规定了设计报告的评分标准,涵盖方案论证、理论分析、电路与程序设计、测试方案与结果分析等方面。此外,文档提供了具体的技术指标定义,并强调了作品的原创性和安全性要求。 适合人群:电气工程专业学生或具有一定电力电子基础的研究人员。 使用场景及目标:①作为参赛指南,帮助参赛者理解竞赛要求并完成作品;②作为教学材料,用于指导学生进行不间断电源的设计与制作,掌握相关技术细节和工程实践技能。 其他说明:此文档不仅明确了技术规格和性能指标,还强调了设计过程中的理论分析、实验验证的重要性,鼓励参赛者在满足基本要求的基础上追求更高的效率和更好的性能。

    毕业论文-Z-BlogPHP海盗导航主题模板-整站商业源码.zip

    毕业论文-Z-BlogPHP海盗导航主题模板-整站商业源码.zip

    葡萄酒质量检测数据集-zip

    数据集介绍 A. 数据样本数量 红葡萄酒(Red Wine):1599 条 白葡萄酒(White Wine):4898 条 B. 属性数量 11 个输入属性 + 1 个输出属性 备注:部分属性可能存在相关性,建议应用特征选择(Feature Selection)方法优化模型。 输入变量(基于理化检测指标): 固定酸度(fixed acidity) 挥发性酸度(volatile acidity) 柠檬酸含量(citric acid) 残留糖分(residual sugar) 氯化物含量(chlorides) 游离二氧化硫(free sulfur dioxide) 总二氧化硫(total sulfur dioxide) 密度(density) pH 值(pH) 硫酸盐含量(sulphates) 酒精度(alcohol) 输出变量(基于感官评价数据): 12. 品质评分(quality,范围 0-10 分)

    Java设计成品】智算考勤统计 - 论文、源码、PPT打包.zip

    此压缩包包含了本毕业设计项目的完整内容,具体包括源代码、毕业论文以及演示PPT模板。 开发语言:Java 框架:SSM(Spring、Spring MVC、MyBatis) JDK版本:JDK 1.8 或以上 开发工具:Eclipse 或 IntelliJ IDEA Maven版本:Maven 3.3 或以上 数据库:MySQL 5.7 或以上 项目配置完成后即可运行,若需添加额外功能,可根据需求自行扩展。 运行条件 确保已安装 JDK 1.8 或更高版本,并正确配置 Java 环境变量。 使用 Eclipse 或 IntelliJ IDEA 打开项目,导入 Maven 依赖,确保依赖包下载完成。 配置数据库环境,确保 MySQL 服务正常运行,并导入项目中提供的数据库脚本。 在 IDE 中启动项目,确认所有服务正常运行。 主要功能简述: 请假审批流程:系统支持请假申请的逐级审批,包括班主任审批和院系领导审批(针对超过三天的请假)。学生可以随时查看请假申请的审批进展情况。 请假记录管理:系统记录学生的所有请假记录,包括请假时间、原因、审批状态及审批意见等,供学生和审批人员查询。 学生在线请假:学生可以通过系统在线填写请假申请,包括请假的起止日期和请假原因,并提交给班主任审批。超过三天的请假需经班主任审批后,再由院系领导审批。 出勤信息记录:任课老师可以在线记录学生的上课出勤情况,包括迟到、早退、旷课和请假等状态。 出勤信息查询:学生、任课老师、班主任、院系领导和学校领导均可根据权限查看不同范围的学生上课出勤信息。学生可以查看自己所有学年的出勤信息,任课老师可以查看所教班级的出勤信息,班主任和院系领导可以查看本班或本院系的出勤信息,学校领导可以查看全校的出勤信息。 出勤统计与分析:系统提供出勤统计功能,可以按班级、学期等条件统计学生的出勤情况,帮助管理人员了解学生的出勤状况。 用户管理:系统管理员负责管理所有用户信息,包括学生、任课老师、班主任、院系领导和学校领导的账号创建、权限分配等。 数据维护:管理员可以动态更新和维护系统所需的数据,如学生信息、课程安排、学年安排等,确保系统的正常运行。 系统配置:管理员可以对系统进行配置,如设置数据库连接参数、调整系统参数等,以满足不同的使用需求。 身份验证:系统采用用户名和密码进行身份验证,确保只有授权用户才能访问系统。不同用户类型(学生、任课老师、班主任、院系领导、学校领导、系统管理员)具有不同的操作权限。 权限控制:系统根据用户类型分配不同的操作权限,确保用户只能访问和操作其权限范围内的功能和数据。 数据安全:系统采取多种措施保障数据安全,如数据库加密、访问控制等,防止数据泄露和非法访问。

    EP100伺服驱动器量产型:C源代码与硬件设计解析及其应用

    内容概要:本文详细介绍了EP100伺服驱动器量产型的全套C源代码及硬件资料,涵盖Altium Designer硬件图纸(包括主控板、驱动板、显示板的电路原理图和PCB文件)以及基于STM32F103的源代码。文中不仅展示了硬件设计细节,如IGBT驱动电路优化、电流采样电路调整,还深入探讨了软件层面的关键代码段,如驱动保护机制、PID积分限幅处理和工程师模式的实现。此外,文章揭示了一些量产过程中遇到的问题及解决方案,如电压毛刺、电机低速抖动等。 适合人群:从事嵌入式系统开发、伺服控制系统研究的技术人员,尤其是对STM32微控制器和Altium Designer有一定了解的研发人员。 使用场景及目标:适用于希望深入了解伺服驱动器内部工作原理、掌握硬件设计技巧和解决实际工程问题的专业人士。目标是帮助读者理解并改进类似产品的设计,提高产品性能和稳定性。 其他说明:文中提到的实际案例和代码片段为读者提供了宝贵的实践经验,有助于提升实际操作能力。同时,硬件设计中的‘疤痕美学’概念生动地展现了工程师们解决问题的过程,增加了文章的趣味性和实用性。

    基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)

    基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计),个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做毕业设计的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设计)基于STM32的人体运动健康指标监测与预警系统设计与实现源码(毕业设

    fogthing工业物联网平台:让连接更加智能,让生产更加高效.pdf

    fogthing工业物联网平台:让连接更加智能,让生产更加高效.pdf

    傅里叶变换函数,Matlab脚本,可以直接调用

    傅里叶变换函数,Matlab脚本,可以直接调用

Global site tag (gtag.js) - Google Analytics