.NET Core プログラム実行時に DLL が見つからないエラーがでたら

実行時に以下のようなバージョンの異なる DLL が見つからないエラーがでることがあります。

System.IO.FileLoadException: Could not load file or assembly ‘System.Configuration.ConfigurationManager, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51’. The located assembly’s manifest definition does not match the assembly reference. (0x80131040)

その場合は以下の操作を行うと改善する場合があります。

  • NuGet のキャッシュをクリアする (Visual Stdio のオプションの NuGet パッケージマネージャーから実行可能)
  • bin, obj フォルダを削除してビルドする
Share this...

UWP アプリケーションをデバッグ実行したときにエラーで配置されたなかった時の原因と対処法

どのタイミングでそうなったのかわからなかったのですが、表題の通り VS2019 で新規で UWP プロジェクトを作成して実行してもエラーで実行できませんでした。Windows を再起動してもダメ。

とりあえずネットで探して以下のページで紹介されている内容で対応しました、

]]>

Share this...

MonoGame 3.6 の UWP10 プロジェクトでキーボード操作を行うと遅延する

通常 Keyboard.GetState メソッドでキーボードの状態を取得すれば現フレームの段階でのキーの押下状態を取得できます。一度に複数のキーを同時に押しても問題ありません(キーボードの配線によってはキー同時押下の上限はあります)。

しかし、UWP10 のプロジェクトを作成し、Windows 10 の環境で実行すると、押下状態を瞬時に取得することはできず、段階的に1キーずつ取得されるような動作になってしまいます。しかも、しばらく押したままにして離すと、一定時間押下中判定のままになってしまい、その後これまた段階的に1キーずつ放すような状態の取得を行います。

ちなみに UWP8.1 のプロジェクトで同じ処理を行うとまったく問題はありません。

参考にその動作を録画してみたので、実際に見てみるとわかると思います。最初が UWP8.1 のプロジェクトでそのあとが UWP10 のプロジェクトでの動作です。

この件についてコミュニティで探してみると同じような報告があり、どうやら MonoGame 3.6 での Windows 10 用の実装に問題があるようです。3.6 リリース後に修正したとの書き込みがあり、とりあえず修正したものを使いたい場合は開発ビルド版を使ってくださいとのことですが、ダウンロードページでそれをダウンロードしようとしてもファイルが見つからないようでした (リンクミス?)。

とりあえずは現状で我慢するか、開発版を探す、UWP8.1 を使う、3.7 を待つのいずれかになりそうです。私はずっと UWP8.1 版を使っていたので気づきませんでした( ^ ^;)。

]]>

Share this...

Windows 10 Mobile のアプリケーションは起動に20秒以上かかると起動せずに落ちる

Windows 10 Mobile のアプリケーションで起動時にファイル操作を「同期処理」であれこれやっていて結構時間がかかっているのですが、Visual Studio からデバッグ実行している限りでは問題なく動作し、W10M から単体でアプリケーションを起動すると、起動が完了する前に落ちてしまいます。

最初この現象の理由がわからずデバッグ実行での確認もできないので悩んでいました。例外をキャッチしてログを出すようにもしていたのですが、何でもないような処理のところでプログラムが落ち、例外もまったく発生しませんでした。

しかし、何回かやっているうちに気づいたのですが、ログの出力時間を確認したら最初のログの時間と落ちるタイミングの時間の差が20秒であることに気づきました。試しに Task.Delay.Wait で待機させるようにしたらもっと前の処理で落ちることを確認できました。

Windiws Phone 7 か 8 あたりでも、処理に時間がかかって UI? に処理を戻さないとアプリケーションが落ちるという話は聞いたことがあるのですが、このことをしばらく思い出せなくて盲点でした。デバッグ実行では落ちないし、例外も発生しないので気を付けなければいけませんね。

余談ですが、ファイルアクセス処理はファイルがあるかどうかのチェックだけでも1回あたり1秒ぐらいかかるので非同期処理のほうがいいですね。

]]>

Share this...

Windows 7 + IE11 の環境で ASP.NEt Web サイトプロジェクトを実行したときに IE の画面が真っ白になる現象を治す方法

メモです。

以下のパターンのいずれかを試す。

  • スタートから「Internet Explorer」を検索し、アドオンなしで実行する
  • タスクマネージャーを開き、「iexplorer」をすべて削除する
]]>

Share this...

Silverlight で XNA のコンテンツプロパインを使うためのプロジェクトファイルへの追加書き込み

なんか毎回忘れているのでメモ書き。

csproj ファイルをテキストファイルで開き、Project タグ以下に以下のタグを追加する。

<PropertyGroup>
   <XnaContentProject>..XXXXSampleContentProjectXXXXSampleContentProject.contentproj</XnaContentProject>
</PropertyGroup>
<Target Name="BeforeBuild">
   <MSBuild Projects="$(XnaContentProject)" Properties="XnaContentPipelineTargetPlatform=Windows;XnaContentPipelineTargetProfile=Reach" />
   <CreateItem Include="$(XnaContentProject)">
     <Output TaskParameter="Include" ItemName="XnaContentProjectItem" />
   </CreateItem>
   <CreateProperty Value="%(XnaContentProjectItem.RelativeDir)">
     <Output TaskParameter="Value" PropertyName="XnaContentProjectPath" />
   </CreateProperty>
   <CreateItem Include="$(XnaContentProjectPath)cachefile*targetpath.txt">
     <Output TaskParameter="Include" ItemName="XnaContentCacheFile" />
   </CreateItem>
   <ReadLinesFromFile File="@(XnaContentCacheFile)" Condition="Exists(@(XnaContentCacheFile))">
     <Output TaskParameter="Lines" ItemName="XnaContentOutputs" />
   </ReadLinesFromFile>
   <CreateItem Include="@(XnaContentOutputs->'$(XnaContentProjectPath)binAnyCPU$(Configuration)%(Identity)')" AdditionalMetadata="Link=Content%(RelativeDir)%(Filename)%(Extension)">
     <Output TaskParameter="Include" ItemName="Content" />
   </CreateItem> </Target>

ただし、プロジェクトをビルドしたりなんかしているといつの間にか以下のようなコメントが csproj ファイルの中に追加されていて、前に追加したタグもすべてコメントアウトされていることがある。

To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets.

実はコメントアウトされたタグの下にまったく同じタグが再度追加されているが、なぜかこのコメントアウトされたものが残っていると正しくコンテンツパイプラインが動作しない。なのでコメントをすべて削除して再ビルドする必要がある。

メモ書きなので環境によっては動作が異なる場合があるので注意してください。

]]>

Share this...

Windows ストアアプリのデバッグ実行で認証関連のエラーで起動できなくなった時の対処法

環境

  • Windows 10
  • Visual Studio 2015
  • Windows ストアアプリ 8.1 UWP

内容

あるタイミングで Visual Studio から Windows ストアアプリをデバッグ実行しようとしたときにエラーが発生して実行できなくなったので、それの対処法を書いておきます。

デバッグ実行しようとすると、ストアアプリのウィンドウは表示されるけど、その後エラーダイアログが表示されてアプリケーションが終了してしまいます。ダイアログの表示内容は

Windows ストア アプリ ‘{GUID}!App’ をアクティブにできません。{AppName}.Windows.exe プロセスが開始されましたが、アクティベーション要求がエラー ‘アプリは開始されませんでした’ で失敗しました。

という内容です。(キャプチャ忘れました。)

一応この件についてヘルプを見ろという指示がでるので、見てみると以下の URL に誘導されます。

そこではイベントビューアーを使ってログの内容を見ろという内容が書かれているので、ログを確認してみました。すると内容は

エラー アプリは開始されませんでした。 によりアプリ {GUID}!App を Windows.Launch コントラクトに対してライセンス認証できませんでした。

と書かれていました。文章がおかしい気もしますが、ライセンスやアクティベーションがらみでのエラーと読み取ることができます。

ですが、Microsoft アカウントや Visual Studio の認証系を一通りチェックしたのですが、エラーはなくなりませんでした。仕方ないのでエラーメッセージをもとに調べてみると「bin フォルダを削除しろ」というお達しを見つけたので、指示通りに削除して再実行したところ正常に起動できるようになりました。

私の環境では複数の PC でファイルを同期させているのですが、 bin フォルダ内も対象であるため、ほかの PC の認証情報が別 PC にコピーされて、それで正常に起動できなくなったのかもしれません。

]]>

Share this...

[SSRS] レポートマネージャーでレポートがサブスクリプションによって自動エクスポートされたときのログを確認する

メモ書きです。

環境

  • SQL Server : SQL Server 2008 R2

内容

ログを確認すると、エクスポートされたレポートの種類や、エクスポートにかかった時間、結果、出力サイズ、行数などが参照できます。

ログを確認するには SQL Server Reporting Services をインストールした時に作成されるデータベース「ReportServer」のテーブルを参照します。

以下の SQL を実行するとログの内容を確認できます。

use [ReportServer];
select
  B.[Path]                -- レポートのパスと名前
 ,A.[LogEntryId]
 ,A.[InstanceName]        -- レポートサーバーインスタンス名
 ,A.[ReportID]
 ,A.[UserName]            -- 実行ユーザー
 ,A.[ExecutionId]
 ,A.[RequestType]
 ,A.[Format]
 ,A.[Parameters]          -- レポートの出力に指定したパラメーター
 ,A.[ReportAction]
 ,A.[TimeStart]           -- 出力を開始した時間
 ,A.[TimeEnd]             -- 出力が完了した時間
 ,A.[TimeDataRetrieval]   -- データの取得にかかった時間 (単位はミリ秒)
 ,A.[TimeProcessing]      -- レポートの処理にかかった時間 (単位はミリ秒)
 ,A.[TimeRendering]       -- レポートの表示にかかった時間 (単位はミリ秒)
 ,A.[Source]
 ,A.[Status]              -- rsSuccess(成功) またはエラー コード
 ,A.[ByteCount]           -- レポートのファイルサイズ
 ,A.[RowCount]            -- クエリ結果の行数
from [ExecutionLogStorage] A
inner join [Catalog] B
  on B.[ItemID] = A.[ReportID]
where convert(varchar(8), A.[TimeStart], 112) = '20151104'  -- いつのデータを取得したいか、などの条件
order by A.[LogEntryId] desc;

各パラメータの詳しい情報などは以下の URL 先を参照してください。SharePoint について書かれていますが、内部では Reporting Service を使っているので大体同じです。

]]>

Share this...

ASP.NET MVC アプリケーションをデバッグ実行したときに「CultureNotFoundException」が発生する現象を回避する

環境

  • Visual Studio 2013
  • .NET Framework 4
  • ASP.NET MVC 3 (or 4)

現象

いつのころからか、ASP.NET MVC アプリケーションをデバッグ実行しようとすると図のような「CultureNotFoundException」の例外が発生する様になりました。

1

このまま続行して動かしても全く問題ないのですが、デバッグ実行するたびに出てくるので (100% ではないが7~8割) 結構煩わしいです。

海外サイトを調べてみると「C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET Files」フォルダを削除すると直るような記述はあったのですが、それっぽいフォルダが削除してみましたが直りませんでした。(フォルダ名が若干違う)

現状例外を直接発生しないようにする方法が見つからなかったので、ここでは例外が発生してもそのまま無視できる方法について記載しています。この方法を試す場合は、例外を無視しても問題ない場合に行ってください。

手順

Visual Studio を起動したらメニューの「デバッグ」から「例外」を選択します。

2

右の「追加」ボタンをクリックします。

3

「新しい例外」ダイアログが表示されたら、型から「Common Language Runtime Exceptions」を選択し、例外名に「System.Globalization.CultureNotFoundException」と入力して OK ボタンをクリックします。

4

一覧に「System.Globalization.CultureNotFoundException」が表示されていることを確認し、例外が発生しても一時停止されないように「スローされるとき」のチェックを外します。OK ボタンをクリックし、実行しても例外で一時停止されないか確認してみてください。

5

]]>

Share this...