Как добавить конкретную версию System.XML (2.0.5.0) в мой проект .Net 4 - PullRequest
1 голос
/ 16 марта 2011

Я делаю редактор карт для моей телефонной игры для Windows 7 только в стандартном проекте WinNet Forms .Net 4.

Я уже написал методы XmlSerialise / Desearilise - они живут в методах Load и Save.в классе EntityCollection в проекте телефона.

В Windows 7 Phone используется версия System.Xml, System.Xml.Linq и System.Xml.Serialization версии 2.0.5.0.

Я скопировал этиdll в каталог libs и пытался ссылаться на них из моего проекта .Net 4 - System.Xml.Serialization ссылается на 2.0.5.0, как я ожидал, но требует dll System.Xml - когда я ссылаюсь на это из моего каталога Libs, он просто игнорируетя ссылаюсь на .Net 4.

Есть ли в любом случае, я могу заставить его ссылаться на 2.0.5.0?

Спасибо,

Энди

Ответы [ 3 ]

1 голос
/ 16 марта 2011

Единственный способ, которым я знаю, как ссылаться на конкретный двоичный файл вместо того, чтобы отправлять проект в GAC для DLL, - это указать HintPath в файле .csproj для ссылки.Это будет выглядеть примерно так:

<Reference Include="System.Xml">
<SpecificVersion>False</SpecificVersion>
    <HintPath>..\relative\path\to\lib\folder\System.Xml.dll</HintPath>
</Reference>

Возможно, вы захотите полностью квалифицировать версию System.Xml и установить для SpecificVersion значение True.Вы можете убедиться, что на конкретную DLL в вашей папке lib ссылаются, просмотрев значение Path в окне Properties ссылки System.Xml в папке References в Visual Studio.

1 голос
/ 16 марта 2011

Чтобы ссылаться на эти конкретные версии сборок, перейдите в окно Свойства для каждой ссылки и измените Псевдонимы с global на Silverlight . В ваших файлах классов, которые ссылаются на эти сборки, вы можете добавить псевдонимы для каждого типа или псевдонимы, используя следующие выражения:

extern alias Silverlight;
// Per-type:
using XDocument = Silverlight::System.Xml.Linq;
// Aliased namespace:
using Silverlight::System.Xml.Linq;

Это будет означать, что всякий раз, когда вы используете неквалифицированный тип XDocument (или любой другой тип с псевдонимом, аналогичным образом), он будет использовать тот из сборки с совпадающим псевдонимом (т.е. ваш WP7-специфичный).

Вы также можете сделать это встроенным в свой код, не добавляя операторы using, квалифицируя тип соответствующим образом. Э.Г.

var document = Silverlight::System.Xml.Linq.XDocument.Parse(text);

В ваших обстоятельствах я думаю, что использование псевдонимов в пространствах имен - это, вероятно, ваш лучший выбор.

1 голос
/ 16 марта 2011

Возможно, здесь можно было бы разделить только файл между двумя проектами (формы win и WP7), если компилятор не жалуется

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...