最近在做一个客户端,需要使用Remoting服务,原本以为挺简单的,谁知昨天被一个不大不小的问题给耽搁了半天,不过还好解决了,就是还是不知道为什么~哎,期待高人解答~
项目中有两个工程,分别对应ViewModel(Class Library Project)、View(WPF Application Project)。
在ViewModel中添加RemoteObject引用,使用其中的对象。编译的时候却通不过,随后单独编译,发现ViewModel工程编译成功,View却编译失败了。
开始以为是RemoteObject引用的问题,在View中也添加RemoteObject引用应用,再次编译还是老样子,但是将ViewModel中使用到RemoteObject对象的句子注掉,编译又能成功了。对比两个工程中的已有的引用,也都差不多。随即又尝试在View中使用RemoteObject对象
再次编译提示:“命名空间"Test”中不存在类型或命名空间名称"RemoteObject”(是否缺少程序集引用?)”
以我个人的常识来说,我真不知道是哪的问题了,明明引用已经添加,在手动写代码时自动提示也都能提示出上面的定义,怎么编译就不行呢!?
网上搜罗了好久也找不到解决的方法,类似http://www.cnblogs.com/yiriqing/archive/2006/07/14/450535.html中提到的第四点也并不是我这里遇到的问题,看来只能靠自己了。
尝试使用Demo来验证到底是哪里的问题,到底是工程类型有问题,还是缺少别的引用,还是怎么地呢!?
先在一个之前使用的Test项目工程Test1(WPF Application Project)中中添加RemoteObject引用并使用其对象,编译——奇迹般的成功了。
可是我在同一个项目下再次添加一个新的(WPF Application Project)Test2工程,做同样的事结果却是——编译失败。真是不郁闷都不行了,我又将Test1中多余的内容和应用都删掉,排除其影响,可是直到两个工程剩下的东西几乎一摸一样了,还是那样Test1能通过Test2不能。
面对两个几乎一摸一样的工程,最后报着一点希望,更改了工程的属性设置,才恍然大悟——原来问题在这里。
WPF Application Project,创建时默认的为
即Test2最开始是这一设置,将其改为
再次编译——OK!居然这样就通过了~再看Test1中,因为之前使用过程中的需要它的设置已经更改为了“.net framework 4”了。
回到之前的项目中,依法炮制,也能编译通过了。还好解决了,要不真是浪费时间了~暂时只能理解为framework程序集会对Remoting对象的使用产生影响,至于这影响是什么,我还真就不知道了,有待深入~