`
pcajax
  • 浏览: 2173347 次
  • 性别: 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>
分享到:
评论

相关推荐

    C# 引用不同文件夹下的Dll文件

    为了解决这个问题,我们可以将DLL文件按照功能或模块划分到不同的文件夹中,然后在项目中引用这些位于不同文件夹下的DLL。下面将详细介绍如何进行操作。 1. **创建文件夹结构**: 首先,我们需要在项目根目录下...

    让.NET程序兼容不同版本的Dll文件

    在.NET开发环境中,DLL文件是共享库,包含了可重用的代码模块,多个应用程序可能依赖于同一DLL。然而,随着软件的更新迭代,DLL文件的版本可能会发生变化,导致依赖它的程序面临兼容性问题。本文将深入探讨如何使...

    如何生成用户控件的DLL文件方法 VS开发环境 C#

    在 referenceDll 项目解决方案处的引用点击右键,弹出窗口浏览标签下,打开 referenceDll 项目下 Debug 文件,找到刚才复制过来的 createBll.dll 文件,单击确定即可引用。 五、调用DLL文件中的方法 双击引用下的 ...

    lodop dll 引用文件

    总结来说,LODOP DLL引用文件是C#开发网页打印功能的关键,通过正确引用和使用,开发者可以实现高效、便捷的打印解决方案。在实际开发中,你需要根据项目需求灵活运用LODOP提供的接口,以满足各种复杂的打印需求。

    用IDA反汇编DLL文件心得

    1. **启动IDA与加载DLL文件**:打开IDA,选择“File”菜单下的“Open”,然后选择需要分析的DLL文件。IDA会自动识别文件类型并开始加载。 2. **分析过程**:IDA会尝试分析DLL的入口点、函数、段落和字符串等。分析...

    C#下开发及调用dll文件的方法.doc

    - 方式一:直接在解决方案资源管理器中右键点击项目,选择"生成"或"Build",Visual Studio会自动编译项目并生成DLL文件。 - 方式二:利用.NET框架自带的编译器`csc.exe`手动编译。首先,确保环境变量PATH已包含`...

    fastreport所需的dll文件5个

    总的来说,FastReport是一个功能丰富的报表解决方案,这些DLL文件提供了从设计、预览到输出的全方位支持,为开发者带来了极大的便利。在使用这些文件时,记得正确引用并管理依赖,确保应用程序的稳定性和兼容性。...

    DLL文件编辑器

    DLL(Dynamic Link Library)文件是Windows操作系统中的一个重要组成部分,它是一种共享库,包含了可由多个程序同时调用的函数和资源。DLL文件编辑器是一种专业工具,允许用户查看和修改这些文件的内容,以实现特定...

    vb调用dll的各种方法

    DLL是一种Windows操作系统下的文件格式之一,它允许程序共享代码和数据。通过调用DLL中的函数,可以减少内存占用并提高程序运行效率。在VB中,可以通过声明DLL中的函数并调用来实现特定功能。 #### 二、声明DLL函数...

    .Net生成dll文件的方法

    - 默认情况下,DLL文件将位于项目的“bin”目录下的相应配置文件夹(如Debug或Release)中,文件名为项目名称加上.dll后缀。 5. **使用说明文档**: - 描述中提到有使用说明文档,这通常会包含如何在其他项目中...

    WPF资源文件在DLL中的用法

    在Windows Presentation Foundation (WPF) 中,资源文件的管理和使用是项目开发中不可或缺的一部分。当资源文件(如图片、样式、模板等)被整合到DLL(动态链接库)中时,可以有效地组织代码并实现模块化。下面我们...

    wince开发sqlce所需要的开发包dll

    它为移动设备和嵌入式系统提供了轻量级、离线数据库解决方案。在本文中,我们将深入探讨如何在WinCE环境中使用SQL CE进行开发,以及如何处理所需的DLL文件。 首先,SQL Server Compact Edition是一个文件级数据库,...

    VS2010 VB如何生成DLL文件,调用DLL

    如果编译成功,DLL文件将被生成在项目的"bin\Debug"或"bin\Release"目录下,通常命名为"MyFirstDll.dll"。 **调用DLL文件的步骤:** 1. **添加引用**:在另一个项目(如"WindowsApplication1")中,右键单击"引用...

    emp.dll下载 找不到emp.dll DLL文件丢失.zip

    一、如果在运行某软件或编译程序时提示缺少、找不到dll等类似提示,您可将下载来的dll拷贝到指定目录即可(一般是system系统目录或放到软件同级目录里面),或者重新添加文件引用。 二、直接拷贝该文件到系统目录里:...

    EXE.BPL.DLL.Interface.项目解决方案演示.rar

    项目解决方案演示.rar"揭示了这是一个关于Delphi编程的项目,重点在于如何在EXE(可执行文件)、BPL(Delphi库包)和DLL(动态链接库)之间建立接口。项目解决方案通常是指为解决特定软件开发问题而设计的一系列步骤...

    (图解)解决方案、项目、程序集、命名空间区别

    解决方案(Solution)是一种容器,用于存放多个项目,每个项目实现不同的功能,最后将这些项目组合起来,形成一个完整的解决方案。一个解决方案可以包含多个项目,每个项目都是一个独立的实体,可以是控制台应用程序...

    vb 引用dll 详解

    首先,我们需要创建一个新的VB项目,定义好需要导出的公共函数或子例程,然后选择"生成" -&gt; "生成解决方案",生成DLL文件。在主程序中,通过上述方式添加引用,然后调用这些自定义的函数。这种方法允许我们将复杂的...

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native Interface)代码。在Spring Boot项目中集成JNA,可以方便地实现Java应用程序对DLL...

Global site tag (gtag.js) - Google Analytics