我有一个数据库项目,其中包含自定义SQL脚本,我需要将这些脚本添加到MSI文件夹中,以便我的自定义操作可以选择并执行它们。
出现以下错误
HeatGeneratedFileList.wxs(6,0):错误LGHT0103:系统找不到文件'SourceDir \ TestScript-Copy.sql'。
HeatGeneratedFileList.wxs(9,0):错误LGHT0103:系统找不到文件'SourceDir \ TestScript.sql'。
我已经创建了使用热量完成的动作:
<Target Name="BeforeBuild">
<HeatDirectory Directory="../Database/DatabaseFiles/" OutputFile="HeatGeneratedFileList.wxs" ComponentGroupName="Database.Installer" DirectoryRefId="INSTALLFOLDER" AutogenerateGuids="true" ToolPath="$(WixToolPath)" SuppressFragments="true" SuppressRegistry="true" SuppressRootDirectory="true" SuppressCom="true" />
</Target>
这是HeatGeneratedFileList.wxs文件
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLFOLDER">
<Component Id="cmp35BC97AC12F21A6F6154759C2D9B5430" Guid="*">
<File Id="filDEDB241BDDF1A0CD0B001190398F5F5F" KeyPath="yes" Source="SourceDir\TestScript - Copy.sql" />
</Component>
<Component Id="cmp221D9003B2C58612888DBC0D1CEBC730" Guid="*">
<File Id="filF6EA2F11A51AF10E1517FFB9152307EE" KeyPath="yes" Source="SourceDir\TestScript.sql" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="AgentX.Database.Installer">
<ComponentRef Id="cmp35BC97AC12F21A6F6154759C2D9B5430" />
<ComponentRef Id="cmp221D9003B2C58612888DBC0D1CEBC730" />
</ComponentGroup>
</Fragment>
</Wix>
我想从我的自定义操作中运行以下代码以执行两个脚本:
private static bool ProcessSQLFile(Session session, string script)
{
var success = true;
try
{
var connectionStringBuilder = BuildConnectionString(session);
var scriptToRun = File.ReadAllText(script);
var connectionString = new SqlConnection(connectionStringBuilder.ConnectionString);
var server = new Server(new ServerConnection(connectionString));
server.ConnectionContext.ExecuteNonQuery(scriptToRun);
}
catch (Exception e)
{
Console.WriteLine(e);
success = false;
}
return success;
}
答案 0 :(得分:1)
我在csproj文件中错过了以下内容:
<ItemGroup>
<LinkerBindInputPaths Include="%(ProjectReference.RootDir)%(ProjectReference.Directory)bin\$(Configuration)\DatabaseFiles\" />
</ItemGroup>