Wix のカスタム アクションに C# を使用していますが、これは正常に動作します。カスタム アクションは基本的に、メソッドに渡されたパラメーターに基づいて SQL スクリプトを実行するだけです。
私が実行しているスクリプトの 1 つは、テーブルの 1 つにデータを入力します (テーブルに何もない場合)。次のようになります。
IF (SELECT COUNT(*) FROM [dbo].[Table]) = 0
BEGIN
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', NULL)
INSERT [dbo].[Table] ([ItemId], [Description]) VALUES (N'<<GUID>>', N'The 2nd Item')
...
END
この例<<GUID>>
では、e00104e4-7e5f-4563-9356-30732d5ca57e
これらのスクリプトは、対応するエディションの Management Studio を使用して SQL Server 2008 R2 のデータ エクスポートから生成されたものです。
このスクリプトを Management Studio で実行すると、正常に動作し、期待どおり、何もない場合はすべてのデータが挿入されます。ただし、C# コードで実行すると、次の例外が発生します。
Conversion failed when converting from a character string to uniqueidentifier
テーブルの唯一のuniqueidentifier
列として、これは ItemId 列でなければなりませんが、なぜこれが起こっているのか、または問題を解決する方法がわかりません.オンラインで検索しても何も得られませんでした.
編集
これらの SQL クエリはファイルにあり、C# コードはその内容を SQL クエリとして読み取ります。必要のない余分な手順が追加されるため、できる限り変更する必要はありません。