2017-11-15 2 views
0

私のウィンドウフォームアプリケーション用のXML設定ファイルがあります。私はこのファイルを(すでに持っている)メソッドを使って、毎回clickを使ってパブリッシュするたびに暗号化する必要があります。そのため、展開されたツールのバージョンでは、ユーザーはそのXMLファイルを読み取ることができません。 Visual StudioからWindowフォームアプリケーションを公開しているときにXML設定ファイルを暗号化します

<UsingTask TaskName="TestProject.SimpleTask" AssemblyName="TestProject" TaskFactory="SimpleTask" /> 
<Target Name="BeforePublish"> 
    <SimpleTask /> 
</Target> 

私は.csprojファイルの行の下に追加されている https://msdn.microsoft.com/en-us/library/ms366724.aspx

を、以下のような新しいクラスを追加しました::私はから参照してBeforePublishを使用していた

public class SimpleTask : Microsoft.Build.Utilities.Task 
{ 
    public override bool Execute() 
    { 
     File.WriteAllText(@"D:\test.txt", "Working"); 
     //Will add code to encrypt xml file here 
     return true; 
    } 
} 

をしかし、アプリケーションを公開しようとすると、以下のエラーが表示されます。

The task factory "SimpleTask" could not be loaded from the assembly "TestProject". Could not load file or assembly 'TestProject' or one of its dependencies. The system cannot find the file specified. 

SimpleTaskは他のDLLに依存しません。ここで私を助けてください。 同じ問題を解決する方法が他にもある場合は、同様に提案してください。前もって感謝します。 AssemblyFile属性を追加

+0

あなたが知っている、あなたのアプリケーションがあまりにもスマートユーザーはできるし、ファイルを復号化することができます。あなたはDPAPIを使用していると思いますか?これは、認証されたユーザーからものを隠すためのものではなく、同じPCにログインしたり、ファイルシステムにアクセスしたりする可能性のあるものから隠すためのものです。 – Crowcoder

+0

ファイルの暗号化にrijndaelmanagedを使用しています。しかし、ビジュアルスタジオからイベントを発行するとすぐにメソッドを呼び出す必要があります。 – Gerry

+0

私は、一度だけクリックするだけでカスタムビルドタスクを使用しました。この属性は 'UsingTask':' AssemblyFile = "$(ProjectDir)\ folder_if_any \ your_assembly.dll \'にあります。アセンブリに署名してGACにインストールすると動作します。 – Crowcoder

答えて

0

しようとすると、ここであなたは、アセンブリへのパスを指定することができます。

<UsingTask TaskName="TestProject.SimpleTask" AssemblyName="TestProject" 
TaskFactory="SimpleTask" AssemblyFile="c:\path\to\assembly\TestProject.exe" /> 
関連する問題