我正在安装我的Revit插件的两个实例。当我运行Revit时,所有内容都在功能区面板中正确显示:两个下拉菜单 - 每个实例一个。 问题是两者都访问相同的dll文件(首先加载的文件),即使每个插件文件的每个路径都指向不同的位置。
这是插件文件的样子:
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Application">
<Assembly>C:\A\My.Application.dll</Assembly>
<ClientId>{GUID1}</ClientId>
<Name>My Plugin A</Name>
<FullClassName>My.Application.Application</FullClassName>
</AddIn>
</RevitAddIns>
和
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Application">
<Assembly>C:\B\My.Application.dll</Assembly>
<ClientId>{GUID2}</ClientId>
<Name>My Plugin B</Name>
<FullClassName>My.Application.Application</FullClassName>
</AddIn>
</RevitAddIns>
我已经更改了每个条目,但无法让Revit加载两个不同的文件。
非常感谢任何想法或提示。
答案 0 :(得分:1)
.NET AppDomain不会两次加载同一个类。 Revit使用这种机制。
对于你的情况,我建议编辑AssemblyInfo.cs文件。首先,我建议你为你构建的每个程序集使用不同的名称(使用不同版本的引用)。如果必须保持相同的名称,则可以考虑使用不同的版本,以便.NET AppDomain同时加载这两个版本。以下是您应该考虑更改的属性:
[assembly: AssemblyTitle("Name01")]
[assembly: AssemblyProduct("Name01")]
[assembly: AssemblyFileVersion("1.0.1")]
[assembly: AssemblyInformationalVersion("1.0.1")]
要维护相同的代码,您可以使用C# Preprocessor Directives并编译这两种情况(在构建期间创建两个DLL)。