Revit api 和 .net 5
Revit api and .net 5
我想知道是否可以使用.net5开发revit插件,因为开发revit插件的原生平台是net47。
一个以两种不同方式显示消息的简单测试用例,MessageBox
来自 PresentationFramework
和 TaskDialog
来自 Revit api
public class RevitExternalCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//MessageBox.Show("net 5 test");
TaskDialog.Show("net 5 test", "Revit");
return Result.Succeeded;
}
}
当使用TaskDialog.Show("net 5 test", "Revit")
时一切正常。命令启动时显示的消息。
MessageBox.Show("net 5 test")
不起作用,因为“无法加载文件或程序集”错误:
根据我在网上找到的和了解的内容,似乎不能保证使用 .NET 5 与 Revit API(目前在 .NET Framework 4.8 上)一起工作:
与 .NET Framework 4.8 兼容的代码应该可以工作。然而,虽然 .NET 5 和 .NET Framework 4.8 似乎完全包含 .NET Standard 2.0,并且存在允许 .NET Standard 项目引用 .NET Framework 项目的“.NET Framework 兼容模式”(https://docs.microsoft.com/en-us/dotnet/standard/net-standard) ,不保证兼容模式适用于所有 .NET Framework 项目,具体取决于这些项目使用的内容(例如 WPF)。
因此,我认为 Revit API 可能会使用 .NET Framework 4.8 的某些部分,这些部分不完全符合 .NET Standard,并且不在该“兼容模式”(例如 WPF)范围内。
这也是我如何解释 https://thebuildingcoder.typepad.com/blog/2021/01/face-triangulation-lod-net-5-and-core.html
上的答案
我想,只要 Revit 不将其 API 迁移到 .NET 5,加载项就应该以 .NET Framework 为目标,但它们当然可以引用 .NET Standard 2.0 库,使这些库更容易重新用于不是在 .NET Framework 中创建的其他项目。
这是我通常遵循的路线,将尽可能多的代码放在 .NET Standard 2.0 库中(出于兼容性原因)并且仅在真正需要时才使用 .NET Framework(例如,因为与现有的链接API 在 .NET Framework 中)。
我想知道是否可以使用.net5开发revit插件,因为开发revit插件的原生平台是net47。
一个以两种不同方式显示消息的简单测试用例,MessageBox
来自 PresentationFramework
和 TaskDialog
来自 Revit api
public class RevitExternalCommand : IExternalCommand
{
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
//MessageBox.Show("net 5 test");
TaskDialog.Show("net 5 test", "Revit");
return Result.Succeeded;
}
}
当使用TaskDialog.Show("net 5 test", "Revit")
时一切正常。命令启动时显示的消息。
MessageBox.Show("net 5 test")
不起作用,因为“无法加载文件或程序集”错误:
根据我在网上找到的和了解的内容,似乎不能保证使用 .NET 5 与 Revit API(目前在 .NET Framework 4.8 上)一起工作: 与 .NET Framework 4.8 兼容的代码应该可以工作。然而,虽然 .NET 5 和 .NET Framework 4.8 似乎完全包含 .NET Standard 2.0,并且存在允许 .NET Standard 项目引用 .NET Framework 项目的“.NET Framework 兼容模式”(https://docs.microsoft.com/en-us/dotnet/standard/net-standard) ,不保证兼容模式适用于所有 .NET Framework 项目,具体取决于这些项目使用的内容(例如 WPF)。 因此,我认为 Revit API 可能会使用 .NET Framework 4.8 的某些部分,这些部分不完全符合 .NET Standard,并且不在该“兼容模式”(例如 WPF)范围内。 这也是我如何解释 https://thebuildingcoder.typepad.com/blog/2021/01/face-triangulation-lod-net-5-and-core.html
上的答案我想,只要 Revit 不将其 API 迁移到 .NET 5,加载项就应该以 .NET Framework 为目标,但它们当然可以引用 .NET Standard 2.0 库,使这些库更容易重新用于不是在 .NET Framework 中创建的其他项目。
这是我通常遵循的路线,将尽可能多的代码放在 .NET Standard 2.0 库中(出于兼容性原因)并且仅在真正需要时才使用 .NET Framework(例如,因为与现有的链接API 在 .NET Framework 中)。