69 lines
1.9 KiB
C#
69 lines
1.9 KiB
C#
|
using Microsoft.VisualStudio.Project;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace ANX.Framework.VisualStudio.Nodes
|
|||
|
{
|
|||
|
public class AnxAssemblyReferenceNode : AssemblyReferenceNode
|
|||
|
{
|
|||
|
ContentProjectNode node;
|
|||
|
|
|||
|
public AnxAssemblyReferenceNode(ContentProjectNode node, string name, string assemblyPath)
|
|||
|
: base(node, name, assemblyPath)
|
|||
|
{
|
|||
|
this.node = node;
|
|||
|
}
|
|||
|
|
|||
|
protected override NodeProperties CreatePropertiesObject()
|
|||
|
{
|
|||
|
return new AnxAssemblyReferenceProperties(this);
|
|||
|
}
|
|||
|
|
|||
|
public string RuntimeVersion
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
if (this.IsValid)
|
|||
|
{
|
|||
|
using (var domain = node.BuildAppDomain.Aquire())
|
|||
|
{
|
|||
|
return domain.Proxy.GetAssemblyRuntimeVersion(this.Url);
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
return string.Empty;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public override void RefreshReference(bool fileChanged = false)
|
|||
|
{
|
|||
|
if (node.BuildAppDomain.IsDisposed)
|
|||
|
return;
|
|||
|
|
|||
|
|
|||
|
using (var buildDomain = node.BuildAppDomain.Aquire())
|
|||
|
{
|
|||
|
if (!File.Exists(this.Url))
|
|||
|
{
|
|||
|
buildDomain.RemoveShadowCopyDirectory(new Uri(this.Url));
|
|||
|
}
|
|||
|
|
|||
|
base.RefreshReference(fileChanged);
|
|||
|
|
|||
|
if (File.Exists(this.Url))
|
|||
|
{
|
|||
|
buildDomain.AddShadowCopyDirectory(new Uri(Path.GetDirectoryName(this.Url)));
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
var container = (ContentProjectReferenceContainer)this.ProjectMgr.GetReferenceContainer();
|
|||
|
if (fileChanged)
|
|||
|
container.RefreshAssemblies();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|