Как я могу применить конкретную версию .net Framework - PullRequest
3 голосов
/ 27 августа 2009

У нас сложилось впечатление, что установка целевой структуры в свойствах решения ограничит это приложение использованием только этой инфраструктуры или функциональности ниже. Мы только что выяснили, что кто-то может добавить ссылку и начать использовать код из более высокой версии фреймворка, и компилятор не будет жаловаться. Поскольку мы хотели бы предотвратить это в будущем, есть ли у кого-нибудь идеи о том, как я могу обнаружить что-то, ссылающееся на более высокую версию, или нет? Мне нужно завершить сборку, если кто-то добавит код выше нашей цели.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Предполагая, что вы ориентируетесь на .NET 2.0 и выше ... ваша сборка может завершиться ошибкой, если вы обнаружите ссылки на System.Core или другие сборки 3.x (например, WPF) в ссылках ваших проектов.

UPDATE

Вы можете начать с проверки внутри каждого .PROJ файла на:

<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>

Затем внутри тега <ItemGroup>:

<Reference Include="System.Core">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>

Это может быть пользовательская задача NAnt или написать собственный анализатор для поиска этих узлов и сбоя сборки.

0 голосов
/ 27 августа 2009

Зачем вам нужно предотвращать это, если оно работает? Пока вы не используете ни одну из новых функций, я считаю, что возможно иметь «прямые» совместимые DLL.

...