7

私はEntlib 5.0のソースコードを持っており、自分のキー(snkファイル)を使ってすべてのアセンブリに署名する必要があります。プログラムでcsprojファイルを変更する

最も簡単な方法は、のVisual StudioでEnterpriseLibrary.2010ソリューションファイルを開き、各プロジェクトのためにプロパティ - >署名を選択し、アセンブリに署名してからキーファイルを選択選択することであろう。

しかし、私は、私は手動でプロジェクトファイルを編集し、PropertyGroupsの現在のリストの末尾に次を挿入するスクリプトを書くことができることを手動で行うにはしたくない:

<PropertyGroup> 
    <SignAssembly>true</SignAssembly> 
    </PropertyGroup> 
    <PropertyGroup> 
    <AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile> 
    </PropertyGroup> 

任意のヘルパークラスC#またはスクリプティングでは、それが簡単で迅速な方法であれば良いでしょうか?

+1

なぜXDocumentクラスを使用するC#プログラムを記述しないのですか? –

答えて

19

あなたは、サンプルコードMicrosoft.Build.BuildEngine名前空間でMSDN Link

を見てみることができます。

Engine eng = new Engine() 
Project proj = new Project(eng); 
proj.Load(FullProjectPath); 
proj.SetProperty("SignAssembly", "true"); 
proj.Save(FullProjectPath); 

私は最近、私の会社の.csprojの全てにわたる一連の変更を行うために類似したものを使用手動で各プロジェクトを開いて変更するのではなく、ファイル(200以上)が必要です。

これが役に立ちます。

+1

確かに、私はそれを使ったときに、私たちのソースディレクトリを見て、すべての.csprojファイルを取り出し、必要な変更を加えたコンソールアプリケーションを作成しました。 Microsoft.Build.EngineとMicrosoft.Build.Frameworkへの参照を追加するだけです。 –

+0

csprojの "ビルド後のイベント"部分がこのライブラリを介して利用可能な場合、手元にあることは分かりますか?私は少し釣った。しかしまだそれを見つけていない。ありがとう。そしてこの応答のための "Upvote"。 – granadaCoder

+0

確かに、あなたは何かのようにすることができるはずです 対象postBuild = proj.Targets ["AfterBuild"]; プロジェクトファイルでコメントが解除されていることを前提としています。私は約5秒間突き刺し、存在しなければターゲットを追加する方法を見ませんでしたが、それができることはわかっています。また、この名前空間は時代遅れであり、その代わりに多くの運があるかもしれません。 –