C#动态库在Unity3D 4.5版本上可以编译通过,但在5.2版本上编译不通过的问题

原创 2015年11月19日 10:24:50

        目前在做Unity3D与USB通信的项目,由于Unity3D本身并没有像串口那样的类,因此采用C#(2010)做dll,再由Unity3D引用的方案。

        C#编译生成的库名称为:ClassLibrary1.dll;namespace为:ClassLibrary1;类名为:Class1。 完整项目工程源码会在另一篇文档中贴出,此处略。

        在Unity3D 4.5版本及Unity3D 5.2版本中分别新建工程,之后分别在工程路径中的Assets下新建Plugins文件夹,将C#编译生成的ClassLibrary1分别拷入到两个Plugins文件夹下。在Assets下新建C#脚本,之后添加2行代码:

        using System.Runtime.InteropServices;
        using ClassLibrary1;

        进行编译。Unity4.5版本正常编译通过,而Unity5.2版本出现以下问题:

编译完成 -- 2 个错误,0 个警告
生成启动时间为 2015/11/19 星期四 上午 10:01:18。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1360,9): warning MSB3258: 未能解析主引用“ClassLibrary1”,因为它对 .NET Framework 程序集“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”具有间接依赖关系,而该程序集的版本为“4.0.0.0”,高于当前目标框架中的版本“2.0.0.0”。
CoreCompile:
  C:\Windows\Microsoft.NET\Framework\v4.0.30319\Csc.exe /noconfig /nowarn:0169,1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG;TRACE;UNITY_5_2_0;UNITY_5_2;UNITY_5;ENABLE_NEW_BUGREPORTER;ENABLE_2D_PHYSICS;ENABLE_4_6_FEATURES;ENABLE_AUDIO;ENABLE_CACHING;ENABLE_CLOTH;ENABLE_DUCK_TYPING;ENABLE_FRAME_DEBUGGER;ENABLE_GENERICS;ENABLE_HOME_SCREEN;ENABLE_IMAGEEFFECTS;ENABLE_LIGHT_PROBES_LEGACY;ENABLE_MICROPHONE;ENABLE_MULTIPLE_DISPLAYS;ENABLE_PHYSICS;ENABLE_PLUGIN_INSPECTOR;ENABLE_SHADOWS;ENABLE_SINGLE_INSTANCE_BUILD_SETTING;ENABLE_SPRITES;ENABLE_TERRAIN;ENABLE_RAKNET;ENABLE_UNET;ENABLE_UNITYEVENTS;ENABLE_VR;ENABLE_WEBCAM;ENABLE_WWW;ENABLE_CLOUD_SERVICES;ENABLE_CLOUD_SERVICES_ADS;ENABLE_CLOUD_HUB;ENABLE_CLOUD_PROJECT_ID;ENABLE_CLOUD_SERVICES_ANALYTICS;ENABLE_CLOUD_SERVICES_UNET;ENABLE_CLOUD_SERVICES_BUILD;ENABLE_CLOUD_LICENSE;ENABLE_EDITOR_METRICS;ENABLE_REFLECTION_BUFFERS;INCLUDE_DYNAMIC_GI;INCLUDE_GI;INCLUDE_IL2CPP;INCLUDE_DIRECTX12;PLATFORM_SUPPORTS_MONO;RENDER_SOFTWARE_CURSOR;ENABLE_LOCALIZATION;ENABLE_ANDROID_ATLAS_ETC1_COMPRESSION;UNITY_STANDALONE_WIN;UNITY_STANDALONE;ENABLE_SUBSTANCE;ENABLE_TEXTUREID_MAP;ENABLE_RUNTIME_GI;ENABLE_MOVIES;ENABLE_NETWORK;ENABLE_CRUNCH_TEXTURE_COMPRESSION;ENABLE_LOG_MIXED_STACKTRACE;ENABLE_UNITYWEBREQUEST;ENABLE_EVENT_QUEUE;ENABLE_WEBSOCKET_HOST;ENABLE_MONO;ENABLE_PROFILER;UNITY_ASSERTIONS;UNITY_EDITOR;UNITY_EDITOR_32;UNITY_EDITOR_WIN;UNITY_TEAM_LICENSE;UNITY_PRO_LICENSE /reference:G:/Unity5/Editor/Data/Managed/Mono.Cecil.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll" /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.XML.dll /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll" /reference:G:/Unity5/Editor/Data/Managed/UnityEditor.dll /reference:G:/Unity5/Editor/Data/PlaybackEngines/iOSSupport/UnityEditor.iOS.Extensions.Xcode.dll /reference:G:/Unity5/Editor/Data/Managed/UnityEngine.dll /reference:G:/Unity5/Editor/Data/UnityExtensions/Unity/Networking/UnityEngine.Networking.dll /reference:G:/Unity5/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\Assembly-CSharp.dll /target:library Assets\PC_USB_Sample.cs

生成失败。




        网上查找解决方法,得到以下方法:

        在VS2010中,选择“项目” -> “Assembly-CSharp属性”,在弹出的界面中将“目标框架”由“.NET Framework3.5” 改为“.NET Framework4”,点击确定后,关闭并重新打开项目。再次进行编译,可以正常通过了。



如何直接在unity3d中运行.net4.5等高级版本的机器码

PE格式,是微软Win32环境可移植可执行文件(如exe、dll、vxd、sys和vdm等)的标准文件格式。 普通Win32应用的PE文件里,PE格式的代码段里的代码就是程序的主要代码了,是以平台相...

UGUI -(unity3d 5)判断是否点击在UI 上 Bug,IsPointerOverGameObject()在移动输入模式检测失败

UGUI - 判断是否点击在UI 上 Bug,IsPointerOverGameObject()在移动输入模式检测失败 转载请保留原文链接: UGUI 提供了一个检测是否点击在UI上的方法 Eve...

C#--[反射]如何知道一个类都实现了哪些接口和从那个类继承

可能的情况有:从一个类继承,从一个或多个接口继承,从一个类和一个或多个接口继承。 使用Type类的BaseType属性来取得类从哪个类继承。GetInterfaces方法来取得类都实现了哪些接口。 ...

Unity3D中C#调用C++动态库总结

动态库是用C++和OpenCV写的。 我们可以这样给它分类, 1.普通传值,如下面代码中MotionDetect的第4个参数; 2.传引用,MotionDetect的第3个参数,nNum传进动态...

Unity3D之第一人称第三人称角色控制组件修改C#版本

转自:  之前MOMO在 Unity3D研究院之角色控制器组件研究(二十二)文章中向大家介绍了角色控制器组件。默认系统提供了JavaScript脚本的支持,可是我们还是喜欢用C#来编写脚本,本篇文章...

Unity3D A 星寻路(A*) C# 版本

这个算法很不错了 200 * 200 个格子,最多就十毫秒

关于Unity3D5.X 动态批处理(Dynamic Batching)实测,区别于4.0版本

网上看了几篇文章,觉得不如自己试试,果然发现了一些问题,又查了查官网,才知道版本更新的时候批处理也更新了。 新版本官网上的介绍中去掉了缩放的限制,增加了一条对于镜像物体无法进行批处理,比如Sca...

[Unity3D] Dynamic Font for NGUI 2.5.0c,动态字体脚本支持NGUI最新版本

基于NGUI最新版2.5.0c修改UIFont和其Inspector脚本,支持动态字体 使用步骤: 1、导入最新版本的NGUI包 2、导入U3D_DynamicFont_UIFont_NGUI2...
  • chiuan
  • chiuan
  • 2013年04月01日 14:36
  • 8891

Unity3D A 星寻路(A*) C# 版本

转载:http://www.gopedu.com/article/735 因为项目需要做一个 A 星寻路的功能,但是又不想用 Unity3D 中的 A 星寻路插件,因为感觉插件感觉不够灵活,不能...

Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)

由于最近开发游戏寻路A*使用非常频繁.所以是逻辑上的瓶颈. c#又比c++慢一倍.所以决定上c++.这样算一种优化吧.哈哈. 关于vs上的vc++.分托管和非托管模式.  托管模式就是 C++/CLI...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#动态库在Unity3D 4.5版本上可以编译通过,但在5.2版本上编译不通过的问题
举报原因:
原因补充:

(最多只允许输入30个字)