问题描述: 我有一个解决方案A_Project,还有另一个解决方案B_Project需要用到A的最新DLL,如果每次修改A_Project,然后复制最新的DLL到B_Project 很麻烦。
解决方法:使用生成事件。copy[源文件全路径] 拷贝到的路径
宏:
具体可以看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
copy
这样 就能使用DLL并显示行数了
说明:这种管理方式一般是公司为了防止代码泄露,并且管理方便所用的方式。整个项目你只会看到DLL,代码编译后就生成DLL。
前方高能:来一发广告-广告