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