問題タブ [base-class-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - コード分析で Microsoft.Bcl.Async を使用するとエラーが発生する
コード分析を使用しようとしていますMicrosoft.Bcl.Async
が、コード分析を実行すると 1 つ以上のエラーが発生します。
Update 2 を適用した Visual Studio 2012 を使用しています。
これは私が再現するのは簡単です:
- を対象とする新しい既定のコンソール アプリを作成します
.Net 4
。 - 右クリック
References
して選択Manage NuGet Packages...
- クリックしてボックス
Online
に入力async
しSearch Online
ます。 - が表示されます
Async for .Net Framework 4 ...
。クリックしInstall
て、すべての質問に同意します。 Main()
次の行に追加しTaskEx.Delay(1000);
ます。using System.Threading.Tasks;
- プロジェクトのプロパティ、コード分析セクションに移動し、チェックマークを付け
Enable Code Analysis on Build
ます。 - プログラムをコンパイルします。
次の 2 つのコード分析エラーが発生します。
CA0052 コード分析の実行エラー CA0052 : ターゲットが選択されていません。[エラーと警告] (グローバル)
CA0055 コード分析の実行エラー CA0055: ConsoleApplication2.exe を読み込めませんでした。モジュール 'ConsoleApplication2' の読み取り中に次のエラーが発生しました: メンバー参照を解決できませんでした: [Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]System.Threading.Tasks.TaskEx::Delay. [エラーと警告] (グローバル)
他のテスト プログラムとは異なるコード分析エラーが発生します。私が試した基本的な Windows フォーム アプリでは、次のような結果が得られました。
CA0001 コード分析の実行エラー CA0001 : モジュール 'AsyncForNet4' の読み取り中に次のエラーが発生しました: メンバー参照を解決できませんでした: [Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a]System.Threading. Tasks.TaskEx::遅延。[エラーと警告] (グローバル)
2 つの質問:
- 他の誰かがこの問題を再現できますか?
- 誰にも解決策がありますか?
.net - キューを反復処理していますキューの順序であることが保証されていますか?
これは常に印刷されることが保証されています123
か?
編集:
他の順序で列挙されたキューが明らかに正しくないことに完全に同意します。それが私が質問した理由です。ただし、抽象データ型queue
は、その操作についてのみ保証しenqueue
ますdequeue
。
.NET BCL でこの順序を保証するドキュメントを参照する回答を探しています。
.net - Clickonce を使用した Microsoft.Bcl.Async のデプロイ
次のエラーでクラッシュする VB.NET アプリケーションがあります。
System.IO.FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
File name: 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
Microsoft.Bcl.Async ライブラリを使用しようとしています。実際に Async/Await 呼び出しを使用するプロジェクトとそれを参照するプロジェクトに Nuget 経由でインストールしました。私のコンピューターではすべてが完全に機能しますが、別のコンピューターで公開してテストすると、Async/Await を使用している部分を使用しようとすると、プログラムがクラッシュします。
System.Threading.Tasks は、Copy Local が true に設定された両方のプロジェクトで参照されます。Microsoft.Threading.Tasks は、Copy Local が true に設定された両方のプロジェクトで参照されます。これに関する他のスレッドを見たことがありますが、関連するプロジェクトにインストールされています。これらは私の app.config ファイルに含まれる行です:
これを設定すると何が欠けていますか? さらに情報が必要な場合はお知らせください。ありがとうございました!
.net-4.0 - Microsoft.Bcl.Async を使用した .NET 4.0 アプリケーションを .NET 4.5 ビルド サーバーでビルドできない
Windows 8 マシンの Visual Studio 2012 で開発された、非同期/待機サポートにMicrosoft.Bcl.Asyncを使用する .NET 4.0 アプリケーションがあります。私のマシンで問題なくビルドでき、他の環境 (XP/Vista/7) でも問題なく動作します。
私のビルド サーバーのセットアップは、Windows Server 2008 R2、.NET 4.5 がインストールされ、TeamCity です。
ビルド構成でソリューションのビルドに失敗し、次のエラーが表示されます。
ビルド構成は Visual Studio 2012 に設定されています。エージェントの要件を確認したところ、"DotNetFramework4.5_x86" への依存関係が含まれています。したがって、ここに記載されているように、.net 4.5 msbuild を使用する必要があります。
パッケージ (Microsoft.Bcl.Async、Microsoft.Bcl、Microsoft.Bcl.Build) を削除し、再度追加しました。変わりはない。
オプションが不足しています。何か案は?
編集
先ほど言ったように、TeamCity を設定しただけで、ビルド構成は非常に単純です。まず、svn からブランチをチェックアウトします。
ランナー タイプ「Visual Studio (sln)」のビルド ステップがあり、Visual Studio のバージョンは 2012、「ターゲット」フィールドは「クリーン、ビルド」、構成は「リリース」です。
さらに、「AssemblyInfo パッチャー」を使用してバージョン番号を更新します。
アップデート
Jon Skeet の提案に従い、ランナーの種類を MSBuild に変更しました。ランナー タイプ: MSBuild MSBuild バージョン: Microsoft .NET Framework 4.5 MSBuild ツールバージョン: なし 実行プラットフォーム: x86 ターゲット: クリーン、ビルド コマンド ライン パラメーター: /P:Configuration=Release
それでも同じエラーが発生します。
「MSBuild ToolsVersion」を「4.0」に変更しました (ソリューションは Visual Studio 2012 で作成されているため、必要はないと思いますが)。同じエラー。
「実行プラットフォーム」を「x64」に変更しました。同じエラー。
アップデート
私のサーバー マシンには、.NET 4.0 (および 4.0.3) の参照アセンブリがありませんでした。この投稿を見た後、それが原因かもしれないと思いました。そのことを念頭に置いて、参照アセンブリを開発者のコンピューターからサーバーにコピーしました。次に、もう一度ソリューションを構築しようとしました。同じエラー。あの時は本当に勝てると思ったのに…
アップデート
ビルドに影響を与える.NET4.5インストールからぶら下がっている更新があるかどうかを確認するために、サーバーを再起動しようとしました。同じエラー。
アップデート
Windows 7 および .NET 4 用の Windows SDK をサーバーにインストールしました。そしてついにビルド成功!ただし、Marc Gravell の投稿と Hans の回答に従って、参照アセンブリをコピーするだけでビルドが修正されるはずだと本当に思っていました。次に、「...\Reference Assemblies\」フォルダーを検索して、sdk のインストールによって他に何かが追加されたかどうかを確認しました。そして、自分の間違いに気づきました。参照アセンブリを「C:\Program Files (x86)\Reference」にコピーするのではなく、サーバーのフォルダー「C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework」にコピーしていました。 Assemblies\Microsoft\Framework.NETFramework" . したがって、ビルドはアセンブリを見つけることができませんでした。
c# - ImmutableArray<> は、インデックス付きのネストされた Select の場合、Array<> とは異なる動作をします
非常に奇妙なバグと思われるものに遭遇していますImmutableArray<>
(BCL 不変コレクション v1.0.12.0、ランタイム .NET 4.5 を使用):
同じ名前空間の同じソース ファイルに、次の 2 つの同一の構造体があります。
以下は例外をスローします。
ToArray()
の代わりに最初の行にelements1 を投影するとToImmutableArray()
、すべて正常に動作します。
2 つの構造体の唯一の違いは、WeightedComponent
以前はコードで広く使用されていたのに対し、以前は使用されていWeightedComponent2
なかったということです (これが、バグを再現することが明らかでない理由です)。
同じ式で 2 回反復elements1
すると、問題に関連しているように見えます。削除した場合はSelect
正常に動作しますが、elements2
. これは、コード ビハインドImmutableArray<>
が両方の構造体を考慮している方法に関連しているようです (キャッシュ メカニズムがあるのではないでしょうか?)。
何がこれを引き起こしているのか、何か考えがありますか?
c# - .NET 4.0 の CallerMemberName が機能しない
CallerMemberName
BCL ポータビリティ パックを介して .NET 4.0 で属性を使用しようとしています。メンバー名ではなく、常に空の文字列を返します。私は何を間違っていますか?