背景:最近公司要将太平洋东岸的一个项目搬到mainland这边,但大陆有用大恒水星系列的工业相机,但原来的项目对工业相机没有作支持,只好临时加上;但水星的SDK是dotnet3.5;而公司的项目是dotnet4.5.
我公司电脑的开发环境 win7+vs 2015
家里电脑的开发环境 win8.1+vs2015
今天在公司遇到的情况:
1.看完了大恒sdk的例子,因为是公司项目是wpf项目,所以我决定在wpf项目中调用winform 的picturebox组件;
2.写完代码后,编译通过,运行不能通过;提示只是说初始化大恒的组件是空值,至于是那一个地方出错,没有任何不效提示;
3.考虑可能是wpf项目的原因,因为自己对wpf实在是从来没用过,所以建新的winform项目来测试,发现错误还是一样,编译通过,运行不能通过,排除wpf的问题;
4.比较自己的项目与sdk自带的example,发现example用的是dotnetframework 3.5,而我用的是4.5; 将自己的项目改成3.5正常,将wpf测试工程也改成3.5,正常;
确定是因为dotnetframework版本问题;这需要找厂家最新的版本;
下班回家,复习英语到11点
5.开始在网上找厂家最新的sdk,发现没可能找到,想着明天求助厂家给我们最新的sdk;
6.还是写了一个测试工程来测试下载的一些sdk,死马当活马医,反正就几步;发现出错居然不同,直接提示是因为混合程序集的问题;
7.快速将相关提示放到百度去search一下,居然出了好多答案,其中一个说在app.configj的startup放下一段配置即可解决,我直觉觉得有戏,照办如下:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> <supportedRuntime version="v2.0.50727"/> </startup> </configuration>
现在有一个疑问,一样的代码,在win7和win8.1上相关的机器提示可能会不一样?
个人猜想,win8.1修复了很多bug,所以它对错误的认知应远胜win7,能给用户较精确的提示;