Вот как я решил эту проблему на тот случай, если кому-то это покажется полезным ...
Стратегия заключается в установке переменной sqlcmdvars перед созданием проекта базы данных.Эта переменная будет содержать абсолютный путь к папке сборки, на который можно ссылаться из сценария после развертывания.Тогда было бы просто использовать это в сценарии развертывания для любых дополнительных файлов или ресурсов, которые вам могут понадобиться.Преимущество этой стратегии заключается в том, что все пути относятся к файлу проекта, а не требуют жестко закодированного общего пути.
Создайте новую переменную команды Sql с именем $ (MSBuildProjectDirectory).Это будет переопределено в сценарии предварительной сборки.
Создайте сценарий msbuild, который установит переменную команды sql, и создайте базу данных.
<Project ToolsVersion="4.0" DefaultTargets="BuildDatabase" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<DatabaseServer>(Local)</DatabaseServer>
<DeploymentConnectionString>Data Source=$(DatabaseServer)%3BIntegrated Security=True%3BPooling=False</DeploymentConnectionString>
<Configuration>Release</Configuration>
</PropertyGroup>
<Target Name="BuildDatabase">
<!-- Sets the projet path variable so that the post deployment script can determine the location of the bulk insert csv files. -->
<XmlUpdate
Prefix="urn"
Namespace="urn:Microsoft.VisualStudio.Data.Schema.Package.SqlCmdVars"
XmlFileName="$(MSBuildProjectDirectory)\DatabaseProjectName\Properties\Database.sqlcmdvars"
XPath="/urn:SqlCommandVariables/urn:Properties/urn:Property[urn:PropertyName='MSBuildProjectDirectory']/urn:PropertyValue"
Value="$(MSBuildProjectDirectory)\DatabaseProjectName" />
<MSBuild
Projects="DatabaseProjectName\DatabaseProjectName.dbproj"
Properties="Configuration=$(Configuration);
TargetDatabase=DatabaseName;
TargetConnectionString=$(DeploymentConnectionString);
GenerateDropsIfNotInProject=True;
BlockIncrementalDeploymentIfDataLoss=False;
DeployToDatabase=True;
IgnorePermissions=True"
Targets="Build;Deploy">
<Output TaskParameter="TargetOutputs" ItemName="SqlFiles"/>
</MSBuild>
</Target>
Обновите сценарий развертывания после публикации следующим образом ...
BULK INSERT [dbo].[TableName] FROM '$(MSBuildProjectDirectory)\Scripts\Post-Deployment\Data\YourDataFile.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR='\n')