【Visual Studio2017】デバッグが極端に遅い場合は、IntelliTraceを無効にする

EXE単体で動作させた場合と、Visual Studio2017でデバッグした場合とで動作速度が極端に違う現象に遭遇。
ツール→オプション→IntelliTraceにて、「IntelliTraceを有効にする」のチェックを外すことで、EXE単体の動作速度とほぼ変わらずデバッグできるようになった。 続きを読む 【Visual Studio2017】デバッグが極端に遅い場合は、IntelliTraceを無効にする

【C#】EXEが保存されているパスからの相対パスを絶対パスに変更

/// <summary>
/// EXE保存パスからの相対パスを絶対パスに変更
/// </summary>
/// <param name="relativePath">例.「Setting\Setting.xml」</param>
/// <returns>EXE保存パス+relativePath</returns>
public static string GetFullPath(string relativePath)
{
    //EXE保存パス取得
    string exePath = System.Reflection.Assembly.GetEntryAssembly().Location;

    //EXE保存パス+渡された相対パス
    return System.IO.Path.Combine(System.IO.Path.GetDirectoryName(exePath), relativePath);
}

 

【Visual Studio2017】コマンドラインからビルドすると「8000000A」エラーが発生する

現象

devenv.exeをコマンドラインから実行し、ソースをビルドすると、
ERROR: An error occurred while validating. HRESULT = ‘8000000A’
が発生してビルドに失敗する。 続きを読む 【Visual Studio2017】コマンドラインからビルドすると「8000000A」エラーが発生する

【C#】Clipboard.GetDataObject()にて常にnullが返ってくる

メインスレッド以外からClipboard.GetDataObject()したところ、クリップボードの状態に関わらず常にnullが返ってくる。

この場合は、以下のようにInvokeすれば取得できる。

this.Invoke((System.Action)(() =>
{
    System.Windows.Forms.IDataObject data = Clipboard.GetDataObject();

    if (data != null)
    {
          //行いたい処理
                 :
    }
}));

Visual Studio2017

【C#】【SQL Server Compact】接続時に0x80004005エラーが発生する

エラー内容

System.Data.SqlServerCe.SqlCeException (0x80004005): Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8876. Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
場所 System.Data.SqlServerCe.NativeMethods.LoadNativeBinaries()
場所 System.Data.SqlServerCe.SqlCeConnection..ctor()
場所 System.Data.SqlServerCe.SqlCeConnection..ctor(String connectionString)

続きを読む 【C#】【SQL Server Compact】接続時に0x80004005エラーが発生する

【C#】クエリ式でLeft Joinする

table1とtable2をleft joinするサンプル

var record = (from t1 in table1
              join t2 in table2
              on t1.ID equals t2.ID into tmp
              from joinTable in tmp.DefaultIfEmpty()
              select new
              {
                  t1.ID,
                  t1.name,
                  t2Name = joinTable.name /*nameが被っているので、別名を設定*/
              }
              );

 

【EntityFramework】「値 NULL を挿入できません。この列では NULL 値が許可されていません」が発生する

Entityに値を設定したにも関わらず「値 NULL を挿入できません。この列では NULL 値が許可されていません」エラーが出て困った。

主キーが単一でかつ、id列で無い場合は、[DatabaseGenerated(DatabaseGeneratedOption.None)]
と記載することでInsertできるようになった

    public class table1
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int hogeNo { get; set; }
                    :