0

SQL Server Compact に依存する WPF アプリの公開に関する問題を明らかに解決するこの投稿を読みました。この投稿の著者によって規定されたすべての手順を実行しました が、うまくいきません。SQL Server Compact の "private" フォルダーからすべての DLL を追加すると、起動時にアプリがクラッシュします。違いは、私が .NET 4.5 を使用しているのに対し、例では 4.0 を扱っていることです。それが問題の核心であるかどうかはわかりませんが、それらの設定では機能しません。

私のアプリは次の例外でクラッシュしています:

System.Windows.Markup.XamlParseException

これが私のものですapp.config(記事のアドオンを含む):

<?xml version="1.0"?>
<configuration>
   <connectionStrings>
      <add name="TypeAppRelease.Properties.Settings.MyDatabase_1ConnectionString"
           connectionString="Data Source=D:\XXXXXX\XXXXX\XXXXXXX\externals\MyDatabase#1.sdf;Password=XXXXXXX;Persist Security Info=True"
           providerName="Microsoft.SqlServerCe.Client.4.0"  />
   </connectionStrings>
   <system.data>    
      <DbProviderFactories>      
         <remove invariant="System.Data.SqlServerCe.4.0"/>      
         <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1, 
               Culture=neutral, 
                PublicKeyToken=89845dcd8080cc91"/>    
      </DbProviderFactories>  
   </system.data>
   <startup> 
       <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
   </startup>
</configuration>

もう一つ。ClickOnce パブリッシングだけでインストール ファイルが生成され、それが機能しないという不平を言うので、これにたどり着きました。

アプリケーションに必要なファイルがありません....

そのため、上記でリンクした解決策にたどり着きましたが、これもうまくいかないようです。

アップデート:

この問題を解決しない限り、この問題を延長したいと思います。私は ClickOnce の配置を脇に置いて、デバッグ/リリース ビルドを 2 台のマシンでテストすることにしました。1) SQL Compact Server がインストールされており、2) NET フレームワークのみがインストールされています。

アプリは最初のマシンでは正常に動作し、2 番目のマシンでは失敗します。最初のマシンには Compact SQL がインストールされて実行されているため、これはかなり論理的です。

次に、最初のマシンからサーバーのインストールを削除し、アプリを再度実行しました。まだ動作しますが、2 番目の PC では動作しません。エラーは次のとおりです。

System.IO.FileLoadException

なぜそれが得られるのか、なぜ最初のマシンで同じようにならないのかわかりません。

多分それは64 / 32ビットOSのものですか?PC1 は Windows 7 64 ビットを実行し、PC2 は x86 を実行します。

4

1 に答える 1

1

I you use ADO.NET objects (SqlCeCommand, DataSet) instead of Entity Framework (as described in my blog post) you must reference System.Data.SqlServerCe.dll in your project folder (assembly version 4.0.0.1) and NOT the dll in your GAC (assembly version 4.0.0.0). I have updated my blog post with that information.

于 2013-03-22T06:41:39.167 に答える