У меня есть проект базы данных в Visual Studio 2010, где в сценарии после развертывания я хочу импортировать двоичные данные из двух файлов в базу данных. Для этого у меня есть код очень похож на следующее в файле ссылочного из файла сценария после развертывания:Как обращаться к файлам относительно корня проекта при развертывании проекта базы данных?
INSERT INTO [dbo].[MyTable] ([Column1], [Column2])
SELECT t1.BulkColumn, t2.BulkColumn
FROM
OPENROWSET(BULK N'$(ProjectDirectory)\Scripts\Post-Deployment\TestData\t1.dat', SINGLE_BLOB) AS t1,
OPENROWSET(BULK N'$(ProjectDirectory)\Scripts\Post-Deployment\TestData\t2.dat', SINGLE_BLOB) AS t2;
Этот имеет работал раньше. Я не уверен, в какой момент он перестает работать, но теперь все, что мне кажется, это ошибка SQL01262: The variable 'ProjectDirectory' has not been defined
(по иронии судьбы, с местом ошибки самого пост-развертывания, строка 0 столбец 0). Я вырыл через файлы в корневом каталоге проекта и нашел, что это своего рода-Сорта определены в самом файле проекта, который имеет следующие в верхнем уровне <Project>
узла:
<ItemGroup>
<SqlCommandVariableOverride Include="ProjectDirectory=$(MSBuildProjectDirectory)" />
</ItemGroup>
изменяющемся $(ProjectDirectory)
к $(MSBuildProjectDirectory)
в фрагменте выше изменен ничего, кроме имени переменной в сообщении об ошибке. Ошибка возникает во время этапа проверки развертывания, а не во время развертывания.
Каков правильный способ в сценарии после развертывания ссылаться на файлы с корневым каталогом проекта для включения содержимого этих файлов в развертывание базы данных?