Я использую VS2010, и я попытался добавить несколько сборок с локального жесткого диска на мой проект С# через ссылку на файл. Заглянув в файл csproj
, я обнаружил, что ссылка на файл появляется как
<Reference Include="name">
Однако иногда это выглядит как
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Чем может быть разница?
Вдохновленный ответом k3b, я сделал еще один тест. Я создал новый проект библиотеки классов.
-
Добавьте ссылку на файл. Исходное значение Специфицированной версии в панели Свойства - False. Файл
csproj
выглядит как<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
-
Измените конкретную версию в панели "Свойства" на "Истина". VS добавляет версию в атрибут
Include
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
-
Снова измените конкретную версию в панели свойств на False. VS добавляет дочерний элемент
SpecificVersion
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
Итак, кажется, что правило:
- Когда версия присутствует в атрибуте Include и нет дочернего элемента
SpecificVersion
, сборка файла настроена на определенную версию - Детский элемент
SpecificVersion
добавляется только со значением False.
Одна вещь, которую я до сих пор не понимаю:
- Для моего нового тестового проекта, если я удалю ссылку на файл и добавлю его обратно, он вернется к форматированию в точке 1, которая по умолчанию.
- Для моего существующего проекта, если я удалю ссылку на файл и добавлю его обратно, я верну формат в пункте 3. Хотя это также означает, что конкретная версия не используется, мне интересно, почему она не возвращается в формат в пункте 1.