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