2016-11-07 22 views
0

私はEF6コードの最初のデータベースを使用するWPFアプリケーションを作成しました。 私はVisual Studioですべての作業をしており、デフォルトのLocalDbを使用しています。 クライアントは、これまでに行ったことをテストしたいと考えています。 ClickOnceアプリケーションのインストールを開発用PCに試しました。プログラムは単に起動しない、ウィンドウが開かない....絶対何も起こらない。 私は単純なWPFアプリケーションをデプロイしました。すぐに動作しますので、EFコンポーネントと推測します。Entity Framework WPFアプリケーションのデプロイ

  • 何らかの出力ログやデバッグを取得するとエラーがどのように表示されるのですか?
  • エラーを解決する方法はありますか?
  • どこにインストールされますか?
  • デバッガを接続するにはどうすればよいですか? App.configを

    <?xml version="1.0" encoding="utf-8"?> 
    <configuration> 
        <configSections> 
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
        </configSections> 
        <connectionStrings> 
        <add name="EEHA_Inspector.Properties.Settings.EEHA_Inspector_Model_EEHA_DbContextConnectionString" 
         connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=EEHA_Inspector.Model.EEHA_DbContext;Integrated Security=True" 
         providerName="System.Data.SqlClient" /> 
        </connectionStrings> 
        <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
        </startup> 
        <entityFramework> 
        <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
         <parameters> 
         <parameter value="mssqllocaldb" /> 
         </parameters> 
        </defaultConnectionFactory> 
        <providers> 
         <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
        </providers> 
        </entityFramework> 
    </configuration> 
    

    から

MY接続の詳細は、任意の助けいただければ幸いです。

UPDATE#2 - Windowsのログ例外

Application: EEHA_Inspector.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: System.Data.SqlClient.SqlException 
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection, UInt32, Boolean, Boolean, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal ByRef) 
    at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(System.Data.Common.DbConnection, System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal ByRef) 
    at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(System.Data.Common.DbConnection, System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions, System.Data.ProviderBase.DbConnectionInternal, System.Data.ProviderBase.DbConnectionInternal ByRef) 
    at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions) 
    at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(System.Data.Common.DbConnection, System.Data.ProviderBase.DbConnectionFactory, System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>, System.Data.Common.DbConnectionOptions) 
    at System.Data.SqlClient.SqlConnection.TryOpenInner(System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>) 
    at System.Data.SqlClient.SqlConnection.TryOpen(System.Threading.Tasks.TaskCompletionSource`1<System.Data.ProviderBase.DbConnectionInternal>) 
    at System.Data.SqlClient.SqlConnection.Open() 
    at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(System.Data.Common.DbConnection, System.Data.Entity.Infrastructure.Interception.DbConnectionInterceptionContext) 
    at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Dispatch[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.__Canon, System.Action`2<System.__Canon,System.__Canon>, System.__Canon, System.Action`3<System.__Canon,System.__Canon,System.__Canon>, System.Action`3<System.__Canon,System.__Canon,System.__Canon>) 
    at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(System.Data.Common.DbConnection, System.Data.Entity.Infrastructure.Interception.DbInterceptionContext) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.<Open>b__2() 
    at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy+<>c__DisplayClass1.<Execute>b__0() 
    at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<System.__Canon>) 
    at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(System.Action) 
    at System.Data.Entity.Core.EntityClient.EntityConnection.Open() 

Exception Info: System.Data.Entity.Core.EntityException 
    at System.Data.Entity.Core.EntityClient.EntityConnection.Open() 
    at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean) 
    at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<System.__Canon>, System.Data.Entity.Infrastructure.IDbExecutionStrategy, Boolean, Boolean) 
    at System.Data.Entity.Core.Objects.ObjectQuery`1+<>c__DisplayClass7[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<GetResults>b__5() 
    at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Func`1<System.__Canon>) 
    at System.Data.Entity.Core.Objects.ObjectQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].GetResults(System.Nullable`1<System.Data.Entity.Core.Objects.MergeOption>) 
    at System.Data.Entity.Core.Objects.ObjectQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() 
    at System.Data.Entity.Internal.LazyEnumerator`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].MoveNext() 
    at System.Linq.Enumerable.FirstOrDefault[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Collections.Generic.IEnumerable`1<System.__Canon>, System.Linq.Expressions.Expression) 
    at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.Expressions.Expression) 
    at System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.Expressions.Expression) 
    at System.Linq.Queryable.FirstOrDefault[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>) 
    at System.Data.Entity.Internal.EdmMetadataRepository.QueryForModelHash(System.Func`2<System.Data.Common.DbConnection,System.Data.Entity.Internal.EdmMetadataContext>) 
    at System.Data.Entity.Internal.InternalContext.QueryForModelHash() 
    at System.Data.Entity.Internal.ModelCompatibilityChecker.CompatibleWithModel(System.Data.Entity.Internal.InternalContext, System.Data.Entity.Internal.ModelHashCalculator, Boolean, System.Data.Entity.Internal.DatabaseExistenceState) 
    at System.Data.Entity.Internal.InternalContext.CompatibleWithModel(Boolean, System.Data.Entity.Internal.DatabaseExistenceState) 
    at System.Data.Entity.CreateDatabaseIfNotExists`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].InitializeDatabase(System.__Canon) 
    at System.Data.Entity.Internal.InternalContext+<>c__DisplayClassf`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].<CreateInitializationAction>b__e() 
    at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(System.Action) 

Exception Info: System.Data.DataException 
    at System.Data.Entity.Internal.InternalContext.PerformInitializationAction(System.Action) 
    at System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() 
    at System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(System.Data.Entity.Internal.InternalContext) 
    at System.Data.Entity.Internal.RetryAction`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].PerformAction(System.__Canon) 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(System.Action`1<System.Data.Entity.Internal.InternalContext>) 
    at System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() 
    at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(System.Type) 
    at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Initialize() 
    at System.Data.Entity.Internal.Linq.InternalSet`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].get_InternalContext() 
    at System.Data.Entity.Infrastructure.DbQuery`1[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].System.Linq.IQueryable.get_Provider() 
    at System.Linq.Queryable.Where[[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]](System.Linq.IQueryable`1<System.__Canon>, System.Linq.Expressions.Expression`1<System.Func`2<System.__Canon,Boolean>>) 
    at EEHA_Inspector.Model.LoadObvCollection+<Equips>d__4.MoveNext() 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Threading.Tasks.Task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) 
    at EEHA_Inspector.ViewModel.EquipRegVm+<Load>d__55.MoveNext() 
    at System.Runtime.CompilerServices.AsyncMethodBuilderCore+<>c.<ThrowAsync>b__6_0(System.Object) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 
    at System.Windows.Threading.DispatcherOperation.InvokeImpl() 
    at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object) 
    at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 
    at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object) 
    at System.Windows.Threading.DispatcherOperation.Invoke() 
    at System.Windows.Threading.Dispatcher.ProcessQueue() 
    at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 
    at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 
    at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 
    at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 
    at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 
    at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32) 
    at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr) 
    at MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef) 
    at System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame) 
    at System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame) 
    at System.Windows.Application.RunDispatcher(System.Object) 
    at System.Windows.Application.RunInternal(System.Windows.Window) 
    at System.Windows.Application.Run(System.Windows.Window) 
    at EEHA_Inspector.App.Main() 

UPDATE#2 - Windowsのログ情報

Fault bucket 129273820369, type 5 
Event Name: CLR20r3 
Response: Not available 
Cab Id: 0 

Problem signature: 
P1: EEHA_Inspector.exe 
P2: 1.0.0.0 
P3: 58222f01 
P4: System.Data 
P5: 4.6.1586.0 
P6: 575a1428 
P7: 29fe 
P8: 108 
P9: System.Data.DataException 
P10: 

Attached files: 
\\?\C:\ProgramData\Microsoft\Windows\WER\Temp\WERCB7E.tmp.WERInternalMetadata.xml 

These files may be available here: 
C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppCrash_EEHA_Inspector.e_11252b12b7f6697437e3ba42fb9b6e25caa6b8_5e1d3f42_3a80d3bb 

Analysis symbol: 
Rechecking for solution: 0 
Report Id: 91f3e855-2996-40fe-b5fd-957527bbdc9d 
Report Status: 0 
Hashed bucket: f5ea3fa3886ba4e09d8362936de86fe8 

UPDATE#2 - アプリケーションエラーWindowsのログインで

Faulting application name: EEHA_Inspector.exe, version: 1.0.0.0, time stamp: 0x58222f01 
Faulting module name: KERNELBASE.dll, version: 10.0.14393.0, time stamp: 0x57898e34 
Exception code: 0xe0434352 
Fault offset: 0x000d96c2 
Faulting process id: 0x5458 
Faulting application start time: 0x01d239ffc4803847 
Faulting application path: C:\Users\agibson\AppData\Local\Apps\2.0\1RVHJ9WW.8JB\BDB4M51Q.L3R\eeha..tion_fe2d9ab6a328f11f_0001.0000_19df975805717e2b\EEHA_Inspector.exe 
Faulting module path: C:\Windows\System32\KERNELBASE.dll 
Report Id: 91f3e855-2996-40fe-b5fd-957527bbdc9d 
Faulting package full name: 
Faulting package-relative application ID: 

更新3 ============================== =======

OnModelOveride DbContext

namespace EEHA_Inspector.Model 
{ 

    /// <summary> 
    /// Database Definition. 
    /// </summary> 
    public class EEHA_DbContext : DbContext 
    { 
............... 
/// <summary> 
     /// Fluent API - Entity Building Configuration. Used to define extra conditions when building the model. 
     /// These are more powerful than data annotations but also more complex. 
     /// </summary> 
     /// <param name="modelBuilder"></param> 
     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      /* FLUENT API MODEL OVERIDE - INTERMEDIARY TABLES 
      * Creates an intermediate mapping tables to hold many-to-many relationships between 
      * two tables. This is since one table can have multiple objects from another table. 
      * This intermediate table is used just as a look up table. 
      * Although its a look up table, databases must be configured to show the link two ways 
      * since its not possible to have a many-to-many unidirectional relationship. 
      * By mapping these intermediary table; the lookup table stays clear of the relationship; 
      * while this intermediary table handles the needed mapping to make it possible. 
      * E.g. An Equip object contains a collection of Protections; while a Protection 
      * does not contain any reference to an Equip; since this is handled in a 3rd mapping table, 
      * created by these Fluent API model builder commands. */ 

      // Equipment Many-To-Many Look Up to ProtectionCodes 
      modelBuilder.Entity<Equip>() 
      .HasMany(e => e.Protections) 
      .WithMany() 
      .Map(x => 
      { 
       x.MapLeftKey("EquipId"); 
       x.MapRightKey("ProtectionId"); 
       x.ToTable("EquipMapToProtections"); 
      }); 

      // InspectCheck Many-To-Many Look Up to InspectGrades 
      modelBuilder.Entity<InspectCheck>() 
      .HasMany(i => i.InspectGrades) 
      .WithMany() 
      .Map(x => 
      { 
       x.MapLeftKey("InspectCheckId"); 
       x.MapRightKey("InspectGradeId"); 
       x.ToTable("InspectCheckMapToInspectGrades"); 
      }); 
     } 


    } 
} 

UPDATE 3.1 初期化子セットアップ

/// <summary> 
    /// Interaction logic for App.xaml 
    /// </summary> 
    public partial class App : Application 
    { 
     public App() 
     { 
      // Set the database initializer 
      Database.SetInitializer<EEHA_DbContext>(new EEHA_DbInit()); 
     } 
} 

SEEDのオーバライド

#if DEBUG 
#define DESTROY_DB_ONSTART //TODO remove when development progresses. Will make the database get dropped upon every start up 
#endif 
namespace EEHA_Inspector.Model 
{ 
    /// <summary> 
    /// Custom Initialiser for the HA Database. 
    /// Set the initialiliser in the App.xaml.cs class contructor (make one if not there). 
    /// <code>Database.SetInitializer<EEHA_DbContext>(new EEHA_DbInit());</code> 
    /// </summary> 
#if DESTROY_DB_ONSTART 
    class EEHA_DbInit : DropCreateDatabaseAlways<EEHA_DbContext> 
#else 
    class EEHA_DbInit : CreateDatabaseIfNotExists<EEHA_DbContext> 
#endif 
    { 

#if DESTROY_DB_ONSTART 
     /// <summary> 
     /// Overide the Initialize to force a close of all connections when in testing 
     /// </summary> 
     /// <param name="Db">The DbContext to operate on.</param> 
     public override void InitializeDatabase(EEHA_DbContext Db) 
     { 
#if DEBUG 
      this.KillAllConnections(Db); 
#endif 
      base.InitializeDatabase(Db); 
     } 
#endif 


     protected override void Seed(EEHA_DbContext Db) 
     { 
.....changes to Db 
Db.SaveChanges(); 
base.Seed(Db); 
Db.SaveChanges(); //TODO needed? 
} 

UPDATE 4 - DBCONFIG 使用して以前の今日、私はから[SQLExpressを手動でインストールし実行し、ちょうどすべてのオプションのデフォルトと一緒に行きました。 私はmsdnアップデートで見つけたものに基づいてDbConfigに変換しました。これはVisual Studioで再び動作します。私がDbContextコンストラクタに与えた名前でDbを作る。 ClickOnceプログラムをアンインストールしたことを確認してください。再インストール。私は以前、私はこれを気にしていたが、私は今、 "アプリケーションを起動できません| |アプリケーションを起動できません"というダイアログボックスが表示されるので、アプリケーションベンダーに問い合わせてください。以前とは異なり、アプリケーションは実行され、クラッシュします。この新しい方法は私に何のカスタム例外ログを与えない、しかし、私は詳細を以下に示し得るか:

アプリケーションエラーを開始することはできません - [詳細]ボタンの.log

PLATFORM VERSION INFO 
    Windows    : 10.0.14393.0 (Win32NT) 
    Common Language Runtime  : 4.0.30319.42000 
    System.Deployment.dll  : 4.6.1586.0 built by: NETFXREL2 
    clr.dll    : 4.6.1586.0 built by: NETFXREL2 
    dfdll.dll   : 4.6.1586.0 built by: NETFXREL2 
    dfshim.dll   : 10.0.14393.0 (rs1_release.160715-1616) 

SOURCES 
    Deployment url   : file:///C:/TempPath/EEHA/EEHA_Inspector.application 

IDENTITIES 
    Deployment Identity  : EEHA_Inspector.application, Version=1.0.0.17, Culture=neutral, PublicKeyToken=fe2d9ab6a328f11f, processorArchitecture=msil 

APPLICATION SUMMARY 
    * Installable application. 

ERROR SUMMARY 
    Below is a summary of the errors, details of these errors are listed later in the log. 
    * Activation of C:\TempPath\EEHA\EEHA_Inspector.application resulted in exception. Following failure messages were detected: 
     + External component has thrown an exception. 

COMPONENT STORE TRANSACTION FAILURE SUMMARY 
    No transaction error was detected. 

WARNINGS 
    There were no warnings during this operation. 

OPERATION PROGRESS STATUS 
    * [9/11/2016 8:03:58 PM] : Activation of C:\TempPath\EEHA\EEHA_Inspector.application has started. 
    * [9/11/2016 8:03:58 PM] : Processing of deployment manifest has successfully completed. 

ERROR DETAILS 
    Following errors were detected during this operation. 
    * [9/11/2016 8:03:58 PM] System.Runtime.InteropServices.SEHException 
     - External component has thrown an exception. 
     - Source: System.Deployment 
     - Stack trace: 
      at System.Deployment.Internal.Isolation.IStateManager.Scavenge(UInt32 Flags, UInt32& Disposition) 
      at System.Deployment.Application.ComponentStore.SubmitStoreTransaction(StoreTransactionContext storeTxn, SubscriptionState subState) 
      at System.Deployment.Application.ComponentStore.SetPendingDeployment(SubscriptionState subState, DefinitionIdentity deployId, DateTime checkTime) 
      at System.Deployment.Application.SubscriptionStore.SetLastCheckTimeToNow(SubscriptionState subState) 
      at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) 
      at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) 

COMPONENT STORE TRANSACTION DETAILS 
    * Transaction at [9/11/2016 8:03:58 PM] 
     + System.Deployment.Internal.Isolation.StoreOperationSetDeploymentMetadata 
      - Status: Set 
      - HRESULT: 0x0 
     + System.Deployment.Internal.Isolation.StoreTransactionOperationType (27) 
      - HRESULT: 0x0 

Dbのコンテキストコンストラクタ

public EEHA_DbContext() : base("TestEEHACodeDb") 
    { 

    } 

DbConfigクラス

namespace EEHA_Inspector.Model 
{ 
    public class EEHA_DbConfig : DbConfiguration 
    { 
     public EEHA_DbConfig() 
     { 
      SetExecutionStrategy("System.Data.SqlClient",() => new SqlAzureExecutionStrategy()); 
      SetDefaultConnectionFactory(new LocalDbConnectionFactory("v11.0")); 
     } 
    } 
} 

App.config接続文字列を削除しました。もっと削除しますか?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <!--<connectionStrings> 
    <add name="EEHA_Inspector.Properties.Settings.EEHA_Inspector_Model_EEHA_DbContextConnectionString" 
     connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=EEHA_Inspector.Model.EEHA_DbContext;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    --><!--<add name="EEHA_Inspector.Properties.Settings.EEHA_Inspector_Model_EEHA_DbContextConnectionString" 
    connectionString="Data Source=./SQLEXPRESS;Initial Catalog=EEHA_Inspector.Model.EEHA_DbContext;Integrated Security=True" 
    providerName="System.Data.SqlClient" />--><!-- 
    </connectionStrings>--> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
    <!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">--> 
     <parameters> 
     <parameter value="mssqllocaldb" /> 
     </parameters> 
    </defaultConnectionFactory> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

SOLUTION// WRAP UP grek40へ 感謝。特に彼の例外捕捉コード。これにより、エラーを見つけるための変更を開始することができました。それ以前は、Windowsのログはまったく役に立たなかった。 私がハードルを越えたことは、彼が提案したDbContext定義を使用していたことです。なんらかの理由で、デフォルトのDbContextコンストラクタを使用していて、ClickOnceをインストールするように見える接続文字列は、mdfファイルを見つけることを期待しています。 1つは指定されていません。 例外キャッチコードは、リリースモードで私の私のデバッグがいくつかの奇妙な例外(一度それはデバッグモードには適用されませんでした、または私には意味があった)を見つけることができました。私は今、違反コードを無効にして、進めることができました。一度クリックすればインストールできます。

+0

Windowsのイベントログを検査します。例外またはクラッシュが発生した場合は、アプリケーションビューでそれらを見つけることができます。 – dymanoid

+0

ナゲットで参考文献を管理しましたか?私は一度クリックすれば展開するEFプロジェクトを持っていますが、それは私のために働いています(ただし、これまでの設定で、私はそれがどういうことをしたのかさえ分かりません)。一度クリックするだけで、必要なコンポーネントとアプリケーションファイルを確認できます。期待どおりにすべてが含まれ、必要であることを確認してください。 – grek40

+0

ありがとうdymanoid..それを試してみてください。 – Asvaldr

答えて

1

発生した例外をキャッチしてログに記録するために、実際にすべてを実行していることを確認します。

は(App.xaml.cs内部)ハンドラ内のいくつかのログを実装DispatcherUnhandledException

<Application 
    x:Class="[Your Stuff]" 
    DispatcherUnhandledException="Application_DispatcherUnhandledException"> 
</Application> 

App.xamlに例外ハンドラを登録することを確認します。これは、すべての内部例外とそのスタックトレースの例外メッセージを要約するものでなければなりません。その情報を何らかのログファイル(私の例ではC:\Temp\MyAppCrashes.log)に書き込んでください。

private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 
{ 
    var sb = new StringBuilder(); 

    AppendExceptionMessages(sb, e.Exception); 
    AppendExceptionStacktraces(sb, e.Exception); 

    File.AppendAllText(@"C:\Temp\MyAppCrashes.log", sb.ToString()); 
} 

private void AppendExceptionMessages(StringBuilder sb, Exception e) 
{ 
    while (e != null) 
    { 
     sb.AppendLine("============== Exception ===============").AppendLine(e.Message); 
     e = e.InnerException; 
    } 
} 
private void AppendExceptionStacktraces(StringBuilder sb, Exception e) 
{ 
    while (e != null) 
    { 
     sb.AppendLine("======== Exception Stacktrace ==========").AppendLine(e.StackTrace); 
     e = e.InnerException; 
    } 
} 

私はそれが十分ではない場合、App.xaml代わりのStartupUriStartupハンドラを登録してください、これはいくつかのより多くの情報を明らかに願っています。起動時に、ウィンドウを作成する前に、db.Database.Exists()db.Database.Initialize(true)を呼び出して、Existsの戻り値を確認し、呼び出しをtry-catchにラップしてください。もちろん、例外がキャッチされた場合は、ログの詳細を書き込みます。

これまでのところ、このアプローチで何かを見つけていただければ幸いです。

+0

優秀、ありがとうございます。 これは、何らかの理由でデータベースにmdfファイルを添付しようとしていることを示しています。私の理解は、それがないということです。 データベース 'EEHA_Inspector.Model.EEHA_DbContext'として '...... AppData \ Local \ Apps \ 2.0 \ ...... \ 15171c3590a3cd6b \ Data \ EEHA_Inspector.Model.EEHA_DbContext.mdf'というファイルを添付できません。 – Asvaldr

+0

@Asvaldr実際には、mdfファイルがあります...唯一の質問は、このファイルが保存されている場所です。 LocalDBの場合は、** local **である必要がありますので、どこかにあるはずです。あなたのdbコンテキストのコンストラクタを質問に編集してください。 '' Name = XYZ "'の基本コンストラクタなどを使用しているかどうか確認したいと思います。 – grek40

+0

私は定義していないので、私はデフォルトのコンストラクタを使用します。しかし、私は流暢なAPIを使用してOnModelCreatingのオーバーライドを実行します。私はDB初期化も上書きします。今OPのすべてを投稿してください。 – Asvaldr