我正在使用标准的.Net 4 WinForms项目为我的Windows 7手机游戏制作地图编辑器。
我已经编写了XmlSerialise / Desearilise方法 - 它们存在于电话项目中EntityCollection类的Load和Save方法中。
Windows 7 Phone使用2.0.5.0版本的System.Xml,System.Xml.Linq和System.Xml.Serialization。
我将这些dll复制到libs目录并试图从我的.Net 4项目中引用它们 - System.Xml.Serialzation引用了我预期的2.0.5.0但是需要System.Xml dll - 当我从我的Libs目录它只是忽略了我引用.Net 4一个。
无论如何我可以强迫它引用2.0.5.0吗?
谢谢,
安迪
答案 0 :(得分:1)
只要编译器不抱怨,这里的选项可能只是在两个项目(win表单和WP7)之间共享文件
答案 1 :(得分:1)
我知道如何引用特定二进制文件而不是让项目转到DLL的GAC的唯一方法是在.csproj文件中提供HintPath以供参考。它看起来像这样:
<Reference Include="System.Xml">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\relative\path\to\lib\folder\System.Xml.dll</HintPath>
</Reference>
您可能希望完全限定System.Xml的版本并将SpecificVersion设置为True。通过在Visual Studio的References文件夹中的System.Xml引用的“属性”窗口中查看“路径”值,可以验证是否正在引用lib文件夹中的特定DLL。
答案 2 :(得分:1)
要引用这些特定版本的程序集,请转到每个参考的属性窗口,并将别名从全局更改为 Silverlight的即可。在引用这些程序集的类文件中,您可以使用如下语句添加每类型别名或别名:
extern alias Silverlight;
// Per-type:
using XDocument = Silverlight::System.Xml.Linq;
// Aliased namespace:
using Silverlight::System.Xml.Linq;
这意味着每次使用非限定类型XDocument
(或以相同方式别名的任何其他类型)时,它将使用具有匹配别名的程序集中的那个(即您的WP7特定类型) )。
您也可以在代码中内联执行此操作,而无需通过相应地限定类型来添加using语句。 E.g。
var document = Silverlight::System.Xml.Linq.XDocument.Parse(text);
在您的情况下,我认为使用语句的别名命名空间可能是您最好的选择。