Какие могут быть причины для следующего странного поведения и как я могу отследить проблемы?
Мы используем комбинацию make files и msbuild.
У меня есть проект, которыйдолжен быть строго назван.Ранее я настраивал snk для использования в файле проекта следующим образом:
<AssemblyOriginatorKeyFile>$(EnvironmentVariable)TheKeyName.snk</AssemblyOriginatorKeyFile>
, где EnvironmentVariable была определена в пакетном файле, который запустил оболочку для сборки, следующим образом:
set EnvironmentVariable='SomePath'
и это сработало нормально.Теперь мне нужно изменить ключ строкового имени, чтобы он мог различаться на компьютере разработчика и сервере сборки выпуска.Существует переменная, которая существует для хранения полного пути к файлу ключа строгого имени, называемая StrongNameKeyFile.Это определено в среде msbuild, и если я помещу некоторый текстовый вывод в файлы целей или свойств, которые включены как часть задачи msbuild, которая создает проект, то я вижу, что этот StrongNameKeyFile указывает на правильное местоположение.Таким образом, я изменил csproj, чтобы вместо этого иметь:
<AssemblyOriginatorKeyFile>$(StrongNameKeyFile)</AssemblyOriginatorKeyFile>
, но когда я пытаюсь скомпилировать, он оценивается как пустой, и во время сборки не указывается / keyfile.
У нас также есть переменнаяопределены в файлах make, и они также доступны в csproj.Они используются для указания местоположения ссылочных библиотек, чтобы они могли различаться на машинах разработчиков и сборок.Я знаю, что они установлены, так как ссылки выходят правильно, и все компилируется, но если я попытаюсь использовать одну из этих переменных в элементе AssemblyOriginatorKeyFile, то в этом элементе он будет пуст, но работает в элементе ссылки.
Почему это может быть?AssemblyOriginatorKeyFile как-то специально обрабатывается?Как я могу отследить причину этого?