Unity -VS - DLL 编辑后期生成事件

问题描述: 我有一个解决方案A_Project,还有另一个解决方案B_Project需要用到A的最新DLL,如果每次修改A_Project,然后复制最新的DLL到B_Project 很麻烦。
解决方法:使用生成事件。copy[源文件全路径] 拷贝到的路径

宏:
(TargetPath): (ProjectDir) : 项目的目录(定义为驱动器 + 路径);包括尾部的反斜杠“\”。
(TragetDir):+ (TargetFileName): 生成的主输出文件的文件名(定义为基本名称 + 文件扩展名)。
具体可以看MSDN定义,或者直接看“宏”的值
这里写图片描述
现在做一个例子:
Unity新建一个A_Project项目,用VS创建一个B_Project类库-项目(也可以是另一个Unity项目)。为了使路径简单,方便解释 ,把B_Project创建在A_Project同级目录下。
这里写图片描述
提示: B_Project是为Unity生成类库肯定用到Unity类库,所有要添加UnityEngine等相关引用。笔者当前的Unity5.33只支持.net3.5以下,所有B_Project要修改为3.5以或以下。
这里写图片描述
对于B_Project就只在Start()方法打印数据,最后点击生成解决方案,在Debug下生成DLL,接下来我们引用改DLL。

打开Unity项目A_Project项目,打开Asset->Open C# Project打开VS。 选中 解决方案->添加->现有项目。选中B_Project下的B_Project.csproj文件,这样A下我们可以编辑B的类库了

如果A中有代码,我们会看到这样的。第一个A_ProjectCsharp是Unity自动生成的管理Unity项目下的所有代码。
这里写图片描述

我们对B_Project添加生成事件命令,操作如下:
选中B_Project,属性->生成事件->编辑后期生成事件。可以观察下宏的定义。然后写参数,选中宏,然后点插入即可

对于A、B项目的事件代码的写法就不说明了,根据A、B的目录结构,对了,最好在A_ProjectUnity项目下新建一个Plugin文件夹,专门放DLL等文件。

原理:
1 . copy[源DLL等文件路径] [拷贝到需要DLL的路径位置] 目的是为了A使用B提供的DLL
2 . 同时需要把B_Project下生成的B_Project.dll.pdb转换为B_Project.dll.pdb.然后放到A_Project的Plugins下,这是为了能在编辑B项目类库的时候发生错误时,显示DLL报错行数。
3 . 第二步需要找到Unity下的pdb2mdb.exe和dll放到A_Project下,与Assets同级。。新建一个文件夹命名为pdb2mdb
所有路径写法如下:
这里美元“$”打不出来,看截图吧。。

copy (TargetPath) (SolutionDir)Assets\Plugins$(TargetFileName) 把B生成的DLL拷贝到A中

(SolutionDir)pdb2mdb\pdb2mdb.exe (TargetPath) 利用unity自带的pdb2mdb.exe 将B生成的dll 自动生成 dll.mdb

copy (TargetDir) (TargetFileName).mdb $(SolutionDir)Assets\Plugins\$(TargetFileName).mdb 将第二步骤在B下生成的dll.pdm复制到A Plugin下dll.mdb

这里写图片描述

这样 就能使用DLL并显示行数了

这里写图片描述

说明:这种管理方式一般是公司为了防止代码泄露,并且管理方便所用的方式。整个项目你只会看到DLL,代码编译后就生成DLL。

前方高能:来一发广告-广告

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值