将多个插件 dll 文件加载到 Autodesk Revit 中
Load multiple addin dll files into Autodesk Revit
我正在安装我的 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 加载两个不同的文件。
非常感谢任何想法或提示。
.NET AppDomain 不会加载相同的 class 两次。而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)。
我正在安装我的 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 加载两个不同的文件。
非常感谢任何想法或提示。
.NET AppDomain 不会加载相同的 class 两次。而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)。