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

        目前在做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

生成失败。




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

扫描二维码关注公众号,回复: 9568486 查看本文章

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


发布了34 篇原创文章 · 获赞 12 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/phmatthaus/article/details/49923743
今日推荐