Replaced the old VS templates with ones that offer more flexiblity. Started replacing the Content Project for the samples with our custom project type. Inlcuded a basic not yet working AssimpImporter.
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();
|
|
}
|
|
}
|
|
}
|