2017-11-15 1 views
0

내 창 양식 응용 프로그램에 대한 XML 구성 파일이 있습니다. 이 파일을 한 번 클릭하여 게시 할 때마다 매번 메서드를 사용하여 암호화해야합니다. 따라서 배포 된 도구 버전에서 사용자는 해당 xml 파일을 읽을 수 없습니다. 나는에서 참조 에게 BeforePublish을 사용하고 있습니다 : https://msdn.microsoft.com/en-us/library/ms366724.aspxVisual Studio에서 Window 양식 응용 프로그램을 게시하는 동안 XML 구성 파일 암호화

내가 .csproj 파일

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

에 선 아래에 추가 한 새로운 클래스를 아래와 같이 추가 :

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가 사용됩니다. 그러나 이벤트를 게시하는 즉시 Visual Studio에서 메서드를 호출하기 전에 메서드를 호출해야합니다. – 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" /> 
관련 문제