問題タブ [portable-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# - ポータブル クラスにイベント ベースの非同期パターンを実装する
アプリケーション間で共有するいくつかの C# クラス ライブラリがあります。Windows 8 スタイル アプリを作成したいのですが、Windows 8 クラス ライブラリまたはポータブル クラス ライブラリしかサポートしていません。後者を使用することを決定し、非同期操作を除いて、それほど困難なくすべてを移植しました。
現在、私のクラス ライブラリはイベント ベースの非同期パターンを実装しています。
System.Componenent.AsyncOperation/AsyncOperationManager
この例から、ポータブル ライブラリはandをサポートしていないようですSystem.Collections.Specialized.HybridDictionary
。
私の2つの質問は次のとおりです。
1) の代わりに使用するのに適したコレクションは何HybridDictionary
ですか?
2) 不足を回避するにはどうすればよいAsyncOperation/AsyncOperationManager
ですか? まったく別のパターンを実装する必要がありますか?
更新: VS 2012 では、私のポータブル クラス ライブラリは「.net Framework 4 以降」、「Silverlight 4 以降」、「windows phone 7 以降」、「メトロ スタイル アプリ用の .net」をターゲットにしています。
silverlight - .NET 4.5 ポータブル クラス ライブラリ: 実行時にプラットフォームを決定することは可能ですか?
Silverlight と Windows Phone 7.5 を対象とする一連のライブラリがあります。ライブラリには、共通のインターフェイスを持ち、プラットフォームによって実装が異なるナビゲーション ソリューションがあります。(SL と WP7 のナビゲーションは非常に似ていますが、非常に小さな違いがあります。残念ながら、それらを避けることはできません)
INavigationModel インターフェイス + 両方の実装を含むポータブル クラス ライブラリを作成する場合、どのプラットフォームがポータブル クラス ライブラリを呼び出しているかを知る方法はありますか? この情報は、実行時にソリューションの正しい実装を選択するのに役立ちます。
乾杯
edit 代替ソリューションも歓迎します。ポータブルクラスライブラリに関する情報をつなぎ合わせて、それらが何ができるかを確認しようとしています
mono - ポータブル ライブラリ プロジェクトを使用した MonoTouch がビルドできない
MonoDevelop (3.0.3.5) で作成した私のソリューションには、3 つのプロジェクトがあります。
- UI を使用した MonoTouch プロジェクト、
- iOS 固有のコードを含む MonoTouch ライブラリ プロジェクト、
- ドメイン モデルを使用したポータブル ライブラリ プロジェクト。
ポータブル ライブラリ プロジェクトはコンパイルされず、MonoDevelop の参照 (System、System.Core、System.Xml) に警告シンボルが表示されます。アセンブリ参照を展開すると、次のエラー メッセージが表示されます。
Assembly not available in .NETPortable 4.0 Profile1 Profile (in Mono 2.10.9)
このフォーラム スレッドで同じ問題が報告されました。
誰かが同じ問題を抱えていて、それを解決できますか?
アップデート
ビルド エラーのデモ ソリューションは、GitHubのこちら (bgever/plp-build-error) にあります。
エラー メッセージは表示されますが、基本的なコードはコンパイルでき、期待どおりに動作することがわかりました。
ただし、デモ ソリューションのコンパイルを妨げるビルド エラーの 2 つのバリアントは次のとおりです。
ジェネリック型
System.Func<T1,T2,T3,T4,T5,T6,T7,T8,T9,TResult>' requires
10' 型引数の使用 (CS0305)
では、2 引数のジェネリック オーバーロードFunc<T, TResult>
はサポートされていないようですね。
ジェネリック型
System.Action<T>' requires
1' 型引数の使用 (CS0305)
の非汎用バージョンAction
が見つからないようですか?
.net - ポータブル クラス ライブラリでは、Silverlight 定義に .NET Framework にはない空のコンストラクターがあるクラスから継承できますか?
WeakReference を継承するクラス WeakRef があります。このクラスは、元々、標準の .NET フレームワークを対象とする名前空間の一部でした。最近、.NET 4.5 に移行し、Portable Class Library を利用することにしました。WeakRef を含めましたが、Silverlight アプリケーションでそれを参照すると、次のランタイム例外が発生しました。
$exception {System.TypeInitializationException: 'AxisModel.ImageDownloadAlert' の型初期化子が例外をスローしました。---> System.TypeLoadException: タイプ 'Common.WeakRef`1' によって違反された継承セキュリティ ルール。派生型は、基本型のセキュリティ アクセシビリティと一致するか、アクセスしにくくする必要があります。基本クラスに非透過的な既定のコンストラクターがある場合、派生クラスにも既定のコンストラクターが必要であり、メソッドの継承規則はこれら 2 つのメソッドに適用されます。
Common.WeakRefCallbackHostCore`1..ctor(Object syncRoot)
で AxisModel.ImageDownloadAlert..ctor()
で AxisModel.ImageDownloadAlert..cctor() で--- 内部例外スタック トレースの終了 ---
AxisModel.ImageDownloadAlert.get_Instance()
で SLWebApp.App..ctor()}System.Exception {System.TypeInitializationException}
WeakReference の Silverlight バージョンには空のデフォルト コンストラクターがあることに気付きましたが、これは WeakReference の標準 .NET バージョンには当てはまりません。WeakRef には空のコンストラクターが含まれていないため、これがスローされた例外の理由だと思います。問題は、このクラスに空のコンストラクターを追加すると、WPF アプリケーションでコンパイル エラーが発生することです。
実行時エラーやコンパイル エラーを発生させることなく、Silverlight アプリケーションと WPF アプリケーションの間で WeakRef を共有する方法はありますか? 低侵襲のソリューションを探しています。
アップデート:
Silverlight での WeakReference の継承に関して、いくつかの議論がありました。どうやらそれは不可能なので、代わりに WeakReference インスタンスを含むクラスを作成する必要があります。ただし、WeakReference が含まれているかどうかに関係なく、Silverlight 定義には空の既定のコンストラクターがあり、.NET Framework 定義には含まれていないという点で、WeakReference に似たクラスから継承することは可能でしょうか?
ディスカッションは次の場所にあります。
Silverlight で ReflectionTypeLoadException をスローする継承された WeakReference
.net - ポータブル クラス ライブラリと .NET ConcurrentDictionary
http://msdn.microsoft.com/en-us/library/dd287191(v=vs.110).aspxを見ると、名前空間ConcurrentDictionary
内のすべてのフレンドがSystem.Collections.Concurrent
ポータブル クラス ライブラリで使用できるようです。
ただし、F# または C# のポータブル クラス ライブラリを作成すると、 への参照を明示的に追加しても、mscorlib.dll
を使用するとコンパイルが失敗しConcurrentDictionary
ます。
なんで?
.net - ポータブル クラス ライブラリの SafeHandleZeroOrMinusOneIsInvalid
SafeHandleZeroOrMinusOneIsInvalid または同様のクラスは、.NET 4.0 および Windows ストア アプリを対象とするポータブル クラス ライブラリでは使用できません。
これを使用したり、別のクラスを使用したりする理由や方法を知っている人はいますか?
はい、ポータブル クラス ライブラリに安全でないものが欲しいです。
c# - ポータブル クラス ライブラリ、XmlAnyElementAttribute
Portable Class Libraryに、XmlAnyElement
属性を持つメンバーを含むクラスがあります。
このタイプのクラスは .NET 4.0 で完全に機能するため、次のようなコードがあります。
現在の問題XmlElement
は、PCL でサポートされていないようです。では、PCL で同じ結果を得るにはどうすればよいでしょうか。
silverlight - はSilverlight、Windows Phone、Metroでサポートされていますか?
<bindingRedirect />
完全な.NETFrameworkの外部でサポートされていますか?たとえば、次は通常の.NETアプリ(app.config
またはweb.config
)でサポートされています。
サポートされていない場合、間接アセンブリ参照の問題はどのように対処されますか?つまり、コンポーネントAがコンポーネントBとCを参照し、BがD v1.0、CからD v1.1を参照している場合、D v1.1のみを出荷する場合、Bが依存関係を確実に検出するにはどうすればよいでしょうか。
.net - ポータブルクラスライブラリに依存するライブラリでsecannotate.exeを正常に実行するにはどうすればよいですか?
私はAutofacプロジェクトに取り組んでおり、すべての共通ロジックをポータブルクラスライブラリに変換し、特定の機能のためにプラットフォーム固有のライブラリを追加しようとしています。
私の開発マシンはWindows8Enterprise(64ビット)であり、すべてのトリミングを備えたVS2012Ultimateがインストールされています。以前の.NETFrameworkのもの、追加のツール、または追加のPCL固有のツールはインストールされていません。これは、基本的なものだけを備えたクリーンで新しいVMです。この構成では、すべてのビルドとテストが正常に実行されます。
ポータブルクラスライブラリの1つに依存する.NET4.5(フルプロファイル)ライブラリでsecannotate.exeを実行しようとすると、 mscorlib2.0.5.0が必要であることを示すエラーが発生します。
エラーの例を次に示します。PCLはAutofac.dllです。.NET4.5フルプロファイルライブラリはAutofac.Configuration.dllです。
Autofacポータブルクラスライブラリのターゲット:
- .NET 4.0
- Silverlight 5
- .NETforWindowsストアアプリ
それらを対象とした新しい/空のPCLを作成してビルドすることで、問題を再現できます。mscorlib2.0.5.0を参照していることがわかります。
いくつかの検索により、これは古いSilverlightアセンブリバージョンへの参照であると私は信じていますが、PCLプロジェクトには特定のバージョン参照がないため、これがVS2012PCLツールによって導入されていることを想像できます。他の人は、VS2012より前にリリースされた.NETFrameworkアップデートをインストールすることで、同様の問題を修正したようです。実際には、マシンのどこにもmscorlib2.0.5.0が見つかりません。
私が作成したAutofac.dllアセンブリをdotPeekで見ると、次の参照が表示されます。
- mscorlib 2.0.5.0
- システム2.0.5.0
- System.ComponentModel.Composition 2.0.5.0
- System.Core 2.0.5.0
また、これは単なるPCLプロジェクトであり、直接何も参照していません。文字通り-.csprojファイルには単一の参照行はありません。
この二分法の問題を解決するにはどうすればよいですか?インストールする必要がある追加のものはありますか?secannotateコマンドラインに追加する必要のあるパラメーターはありますか?