public WeaverHelper(string projectPath, bool tryToWeaveAllTypes)
{
this.projectPath = Path.GetFullPath(Path.Combine(Environment.CurrentDirectory, @"..\..\..\TestAssemblies", projectPath));
GetAssemblyPath();
var newAssembly = assemblyPath.Replace(".dll", "2.dll");
var pdbFileName = Path.ChangeExtension(assemblyPath, "pdb");
var newPdbFileName = Path.ChangeExtension(newAssembly, "pdb");
File.Copy(assemblyPath, newAssembly, true);
File.Copy(pdbFileName, newPdbFileName, true);
var buildEngine = Substitute.For<IBuildEngine>();
buildEngine.ProjectFileOfTaskNode.Returns(projectPath);
var buildEngineExtensions = Substitute.For<BuildEnginePropertyExtractor>();
buildEngineExtensions.GetEnvironmentVariable("_DebugSymbolsIntermediatePath", false).Returns(new[] { newPdbFileName });
buildEngineExtensions.GetProjectPath().Returns(this.projectPath);
var weavingTask = new WeavingTask
{
TargetPath = newAssembly,
BuildEngine = buildEngine,
TryToWeaveAllTypes = tryToWeaveAllTypes,
References = GetReferences(),
CheckForIsChanged = true,
ProcessFields = true,
BuildEnginePropertyExtractor = buildEngineExtensions,
EventInvokerName = "CustomEventInvoker"
};
var execute = weavingTask.Execute();
if (!execute)
{
throw weavingTask.Exception;
}
var combine = Path.Combine(new FileInfo(assemblyPath).DirectoryName, "NotifyPropertyWeaver.dll");
if (File.Exists(combine))
{
Assembly.LoadFile(Path.GetFullPath(combine));
}
Assembly = Assembly.LoadFile(newAssembly);
}