Вечер всего; Мне дали задание подготовить нашу кодовую базу для перехода на git. В рамках этих приготовлений я удалил избыточный код и заменил ссылки на зарегистрированные библиотеки DLL ссылкой на ту же DLL, предоставленную внутренним пакетом Nuget.
Я обновил ссылку на проект и Единственное, что изменилось, это путь подсказки, но я получаю странную ошибку при создании и даже более странную информацию во время расследования!
Итак, пожалуйста, пристегните себя к некоторым странностям. в вопросе (я укажу здесь, что это ЕДИНСТВЕННАЯ проблема с решением проекта 475; каждый .csproj был обновлен, чтобы указывать на новое местоположение)
Вот исходная ссылка
<Reference Include="Microsoft.SqlServer.SQLTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\Microsoft.SqlServer.SQLTask.dll</HintPath>
<Private>True</Private>
</Reference>
и теперь обновленная ссылка
<Reference Include="Microsoft.SqlServer.SQLTask, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\packages\MyCompany.Client.Winforms.ThirdPartyLibraries.5.0.0\lib\net472\Microsoft.SqlServer.SQLTask.dll</HintPath>
<Private>True</Private>
</Reference>
это должно быть достаточно очевидным, но чтобы констатировать очевидное; только путь к DLL изменился между двумя ссылками.
Теперь проблема. MSBuild показывает следующую ошибку:
Как видите, проблема в том, что, по-видимому, MSBUILD думает, что я ссылаюсь на версию 14.0.0.0? Но ждать; это не то, что показано в моем справочном разделе выше ...
В Visual Studio! в частности свойства этой ссылки.
Хорошо, поэтому может показаться, что как MSBUILD (сборка из командного файла, который мы используем), так и VS имеют для почему-то оба завелись разрешением от GA C. Итак, теперь вопрос в том, почему.
Я, очевидно, понимаю, что указанный флаг c версии - это то, почему это разрешено, но не почему это происходит.
Сборка находится в правильном месте ; Мне пришлось очистить часть пути, но вы можете предположить, что он правильно совпадает со ссылкой (файлы .csproj были обновлены с помощью сценария; были обновлены 1000 ссылок, поэтому я уверен, что путь ТОЧНО совпадает)
Я подумал, что, возможно, с моей стороны произошла ошибка при упаковке нашей старой папки \ lib в пакет Nuget, но DLL, восстановленная в расположение папки пакетов, идентичен исходной DLL. Вот некоторые доказательства, подтверждающие это утверждение.
Вот DotPeek сборки; он показывает имя, версию и архитектуру, которые все соответствуют ссылке.
Вот результат sn.exe (строгое имя), показывающий publi c токен ключа; который также соответствует ссылке.
Я в растерянности, и любая помощь или идеи будут приветствоваться на этом этапе.