2017-09-28 16 views
1

나는 CAKE 0.21.1.0을 사용합니다. 내가 PowerShell 스크립트를 실행하면 직접 오류 <script>.ps1 is not digitally signed. The script will not execute on the system을 발생하기 때문에 the CAKE PowerShell add-in를 사용하지 않기로 결정했다케이크 : 부적절하게로드 어셈블리

$dlls = @(${dll1}, ${dll2}) 
$dlls | % { [Reflection.Assembly]::UnsafeLoadFrom($_) } 
[StaticClassFromLocalLibrary]::SomeStaticMethod(SomeArgument) 

:

나는이 PowerShell을 작업의 상당을 수행하는 작업을 추가 할 수 있습니다. 고용주의 IT 정책 때문에 Set-ExecutionPolicy을 실행하지 않아도 문제가 발생하지 않습니다. PowerShell 스크립트에서 수행 한 단계를 CAKE의 지침으로 직접 변환해야하는 이유입니다. 이름 StaticClassFromLocalLibrary가 현재 컨텍스트에서 찾을 수 없습니다 말하는,

System.Reflection.Assembly.UnsafeLoadFrom(dll1); 
System.Reflection.Assembly.UnsafeLoadFrom(dll2); 
StaticClassFromLocalLibrary.SomeStaticMethod(SomeArgument); 

그러나 예외가 발생했습니다 :

처음에, 나는 내 케이크 스크립트에 다음 줄을 썼다.

그때 내 케이크 스크립트에이 라인을 추가 :가 안전하지 않은 방식으로로드되지 않았기 때문에

#r @"\\hostName\Folder1\Folder2\Folder3\Folder4\Some.Local.Project.dll" 

그러나, 또 다른 예외가 발생되었으며, DLL로드 할 수 없습니다 저를 알리는이 시간을.

#r 지시문 (또는 다른 CAKE 명령)을 사용하여 DLL을 안전하지 않은 방식으로로드하려면 어떻게 지정합니까?

편집 :

내가 this page 컨설팅 및 허용 대답의 제안을 채택하여 내 문제를 해결했다. 이 케이크에서 안전하지 않은로드에는 빌드가 없다하지만

+0

아마 당신이 할 수처럼 출력 뭔가 앱 구성을 추가하여 정렬하십시오. https://msdn.microsoft.com/en-us/library/dd409252(VS.100).aspx – devlead

답변

2

그건처럼 C# 당신의 PowerShell은 C 번호로 니펫을 그냥 변환되어 무엇을 할 수 있는지

var assembly = System.Reflection.Assembly.UnsafeLoadFrom("./tools/Addins/Newtonsoft.Json/lib/net45/Newtonsoft.Json.dll"); 

var type = assembly.GetType("Newtonsoft.Json.JsonConvert"); 

var method = type.GetMethod("SerializeObject", new [] {typeof(object) }); 

var SerializeObject = (Func<object, string>) Delegate.CreateDelegate(
              typeof(Func<object, string>), null, method); 

var json = SerializeObject(new { Hello = "World"}); 

Information("{0}", json); 

어느 것

{"Hello":"World"} 
+0

답장을 보내 주셔서 감사합니다! https://stackoverflow.com/questions/11908156/call-static-method-with-reflection –

+0

알았지 만 위 질문에 대한 대답은 무엇입니까? 일반적으로 질문과 대답으로 돌아가서 자신의 대답을 수락하면 답변을 찾을 수 있으므로 사람들은 그것이 분류되었다는 것을 알게됩니다. 누군가가 제안 된 답변을 게시 한 후 질문 시간을 편집하는 것보다 연습이 좋습니다. 그런 식으로 당신을 도우려는 사람들의 시간을 소중히 여깁니다. – devlead

+0

답장을 보내 주셔서 감사합니다, devlead - 나는 당신이 제안한대로 할 것입니다. –