私はthe Autofac projectのすべての共通ロジックをPortable Class Librariesに変換し、特定の機能のためのプラットフォーム固有のライブラリを追加しようとしています。ポータブルクラスライブラリに依存するライブラリでsecannotate.exeを正常に実行するにはどうすればよいですか?
私の開発マシンはWindows 8 Enterprise(64-bit)で、VS 2012 Ultimateにはすべてのトリミングがインストールされています。以前の.NET Frameworkのインストール済みのもの、追加のツール、または追加のPCL固有のツールがありません。 基本的なものだけでクリーンで新しいVMです。すべてのビルドとテストはこの構成でうまく動作します。
私はポータブルクラスライブラリの一つに依存し、.NET 4.5(フルプロファイル)ライブラリ上secannotate.exeを実行しようと、私はエラーを取得する私は2.0.5.0をmscorlib必要示しています。
エラーの例を示します。 PCLはAutofac.dllです。 .NET 4.5のフルプロファイルライブラリはAutofac.Configuration.dllです。
Error running annotator: Could not find referenced assembly 'Assembly(Name=mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)'. Ensure that the reference paths and assemblies are setup correctly.
Microsoft (R) .NET Framework Security Transparency Annotator 4.0.30319.17929
Copyright (C) Microsoft Corporation. All rights reserved.
Loaded assembly 'Autofac.Configuration' from 'C:\dev\opensource\autofac\trunk\build_output\bin\net40\Autofac.Configuration.dll'.
Resolving assembly 'Assembly(Name=mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089)'.
Loaded assembly 'mscorlib' from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Loaded referenced assembly from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Using core assembly: 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' from 'C:\Windows\Microsoft.Net\assembly\GAC_64\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'.
Assembly 'Autofac.Configuration' is using transparency model 'Level 2'.
Assembly 'mscorlib' is using transparency model 'Level 2'.
Loaded assembly 'Autofac' from 'C:\dev\opensource\autofac\trunk\build_output\bin\net40\Autofac.dll'.
Resolving assembly 'Assembly(Name=mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e)'.
at Microsoft.Security.Tools.CciHostEnvironment.ResolvingAssemblyReference(IUnit referringUnit, AssemblyIdentity referencedAssembly)
at Microsoft.Security.Tools.CciHostEnvironment.LoadCoreAssembly()
at Microsoft.Security.Tools.CciHostEnvironment..ctor(ISecAnnotateHost host, String rootAssemblyPath)
at Microsoft.Security.Tools.SecAnnotate.LoadInputAssemblies()
at Microsoft.Security.Tools.SecAnnotate.AnnotateAssemblies()
at Microsoft.Security.Tools.SecAnnotate.Main(String[] args)
Autofacポータブルクラスライブラリターゲット:
- は、.NET 4.0
- シルバー5
- Windowsストアのアプリ
用の.NETあなたは作成することによって、問題を再現することができますそれらのものをターゲットにして構築する新しい/空のPCLです。 mscorlib 2.0.5.0を参照しています。
これは古いSilverlightアセンブリバージョンへの参照であると私は信じていますが、PCLプロジェクトには特定のバージョン参照がないため、VS 2012 PCLツールで実装されることは想像できます。他の人は、VS 2012の前に出てきた.NETフレームワークアップデートをインストールすることで、同様の問題を修正したようです。私のマシン上のmscorlib 2.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
そして、再び、それは直接anythを参照していない、ただPCLプロジェクトですing。文字通り - .csprojファイルにという単一の参照行ではなく、があります。
このsecannotateの問題を解決するにはどうすればよいですか?インストールする必要があるものはありますか? secannotateコマンドラインに追加する必要があるパラメータはありますか?
please fast =)、私たちはプロジェクト内のPCLで生きていくことができません。生産的な環境では、この2.0.5.0フレームワークアセンブリを参照する方法はありません... – benwasd
私は答えを更新しました。 –
これは、開発マシンでの検証のみを修正します。いいえ?クライアントでのみ.NET 4.0がインストールされていました.NET 4.0のターゲットPCLアセンブリはまだロードできません。 – benwasd