本帖最后由 箭头_Row 于 2025-3-30 02:07 编辑
最近將Ifox由0.7.2版本升級至0.9.3版本,編譯中遇到的問題修復及過程如下:
備註:紅色部份為0.7.2代碼,黑色部份為0.9.3新加代碼。
Step01:修改.csproj文件。
一、支持多版本
 - <TargetFrameworks>Net48;Net80-windows</TargetFrameworks>
二、更改輸出添加版本框架文件夾
 - <AppendTargetFrameworkToOutputPath>true</AppendTargetFrameworkToOutputPath>
三、添加多版本編譯Condition
 - <PropertyGroup Condition="'$(TargetFramework)' == 'NET48'">
- <DefineConstants>$(Configuration);acad2024</DefineConstants>
- </PropertyGroup>
- <PropertyGroup Condition="'$(TargetFramework)' == 'Net80-windows'">
- <DefineConstants>$(Configuration);acad2025</DefineConstants>
- <EnableDynamicLoading>true</EnableDynamicLoading>
- </PropertyGroup>
四、添加ifox0.9.3
 - <ItemGroup>
- <PackageReference Include="IFox.CAD.ACAD" Version="0.9.3-preview4" />
- <PackageReference Include="CommunityToolkit.Mvvm" Version="8.4.0" />
- <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
- <PackageReference Include="Z.ExtensionMethods" Version="2.1.1" />
- <PackageReference Include="System.Data.SQLite.Core" Version="1.0.119" />
- </ItemGroup>
Step02:修改DBTrans.Top。
DBTrans acTrans = DBTrans.Top;
DBTrans acTrans = DBTrans.GetTop();
Step03:修改Keywords.**.GetDesc();
private string _visibility = Keywords.二个直角.GetDesc();
private string _visibility = Keywords.二个直角.GetDescription();
Step04:修改動態塊屬性可見性函數名稱;
br.ChangeDynamicBlockProperty(pro);
br.ChangeBlockProperty(pro);
Step05:修改jig.Entitys的複數錯誤;
if (jig.Entitys.Length <= 0)
if (jig.Entities.Length <= 0)
Step06:取消jig設置的正交形參;
moveJig.SetOptions(basePoint, msg: "指定尺寸线位置", orthomode: false);
moveJig.SetOptions(basePoint, msg: "指定尺寸线位置");
Step07:高版本取消jig拖拽的this關鍵字,提示過時;
var prDrag = moveJig.Drag();
var prDrag = Env.Editor.Drag(moveJig);
Step08: TypedValueList已更改為protect;
 - TypedValueList values =
- new()
- //TypedValueList values = new()
- //{
- // { (int)DxfCode.ExtendedDataRegAppName, regAppName },
- // { (int)DxfCode.ExtendedDataAsciiString, newInfo },
- //};
- //id.AddXData(regAppName, values); // 为实体添加应用程序名的扩展数据
- // 2025-03-26 此处修改为ifox 0.9提供的方法
- using RegAppTable regTable = (RegAppTable)id.Database.RegAppTableId.GetObject(OpenMode.ForWrite);
- //如里不存在名为regAppName的记录,则创建新的注册应用程序表记录
- if (!regTable.Has(regAppName))
- {
- RegAppTableRecord regRecord = new()
- {
- { (int)DxfCode.ExtendedDataRegAppName, regAppName },
- { (int)DxfCode.ExtendedDataAsciiString, newInfo },
- };
- id.AddXData(regAppName, values); // 为实体添加应用程序名的扩展数据
- Name = regAppName, // 设置扩展数据的名字
- }; // 创建一个注册应用程序表记录用来表示扩展数据
- regTable.Add(regRecord); // 在注册应用程序表加入扩展数据,并通知事务处理
- id.Database.TransactionManager.AddNewlyCreatedDBObject(regRecord, true);
- }
- using var ent = tr.GetObject(id, OpenMode.ForWrite);
- using var _ = ent.XData = new XDataList()
- {
- { (int)DxfCode.ExtendedDataRegAppName, regAppName },
- { (int)DxfCode.ExtendedDataAsciiString, newInfo },
- };
- regTable.DowngradeOpen();
- ent.DowngradeOpen();
|