Bill Tillman 发表于 2022-7-6 22:03:46

.部门内的网络开发

我知道这会发生。。。。再一次除了像我这样使用2014 vanilla或2013 vanilla的少数用户外,我们几乎让这个部门的每个人都更新到了AutoCAD 2015 Mechanical。所以我的项目在VB中。NET现在有了一个新的模块,该模块查找AutoCAD的运行版本,并将其与send命令一起使用,以执行其他一些任务。
 
今天我们部署了它,第一个问题是,由于编译时内置了2013年参考,2015年用户无法运行该应用程序。我不认为有任何方法可以解决这个问题,因为与我很久以前编写的VBA程序不同,该程序根据用户运行的版本加载Excel的引用,我认为你无法获得一个独立的exe来即时获取引用。
 
顺便说一句,我刚刚发现2014年的用户可以使用它,但2015年的机械用户暂时是SOL,直到我找到解决方法。。。。可能是另一个exe,它将确定用户的名称或其AutoCAD版本,并为其版本启动正确的exe。。。。。除了安装了两个不同版本AutoCAD的老板之外,他有时会同时运行其中一个或另一个版本,有时会同时运行这两个版本。。。取决于他的工作量和心情。他们希望我为这个部门开发代码,这个部门遵循如此严格的标准。。。。大声笑!

BlackBox 发表于 2022-7-6 22:20:14

 
我不知道你说的“2013参考”是什么意思?
 
 
 
 
你可以编写应用程序代码,使用字段、属性或方法有条件地返回适当的引用,或者只使用dynamics,不是吗?
 
 
 
 
如果您不想依赖RoamablerOutprefix或注册表等,您可以考虑:
 

Process process = <get your process here>;

process .Modules.FileName;

 
 
 
干杯

Tyke 发表于 2022-7-6 22:24:57

比尔,你有没有调查过晚装?这应该获取正在运行的AutoCAD版本,然后识别它并运行适当的软件。
 
BB,你是如何让你的应用程序在不同版本的AutoCAD上运行的,你肯定不会为每个版本写一个应用程序?
 
最好的

Bill Tillman 发表于 2022-7-6 22:35:27

 
是的,一定要说。

BlackBox 发表于 2022-7-6 22:47:01

 
FWiW-
 
早期/晚期绑定可以用动态替换,动态从本质上消除了x86/x64依赖性。
 
我只在版本依赖COM/Platform或AutoCAD API需要时构建不同的应用程序。
 
 
 
作为一个快速示例,这适用于使用Autodesk的2010-2011年(.NET 3.5)。AutoCAD。互操作(依赖于COM/Platform;导致x86、x64版本):
 

               //...
               AcadDocument acDoc = doc.AcadDocument as AcadDocument;
               acDoc.GetType().InvokeMember("StartUndoMark",
                   BindingFlags.InvokeMethod, null, acDoc, null);

               //... Do something useful

               acDoc.GetType().InvokeMember("EndUndoMark",
                   BindingFlags.InvokeMethod, null, acDoc, null);
               //...

 
 
 
... 对于AutoCAD 2012-2015(及更高版本?)可以替换为该版本(.NET 4)做同样的事,用纯。NET(没有COM程序集引用,可以构建到“任何CPU”):
 

               //...
               dynamic acDoc = doc.GetAcadDocument();
               acDoc.StartUndoMark();

               //... Do something useful

               acDoc.EndUndoMark();
               //...

 
 
 
综上所述;更少的键入,更少的程序集引用来跟踪,更少的构建(当然,这取决于你正在编写的应用程序,一如既往)。。。万岁[动力]!
 
干杯

Tyke 发表于 2022-7-6 22:56:01

谢谢你的BB,我不知道动力学啤酒::啤酒:

BlackBox 发表于 2022-7-6 23:09:28

 
直到去年,我也没有这样做,一旦我得到了它,它真的给我留下了深刻的印象。
 
您可能还对C#6语言增强的概述感兴趣。
 
干杯
页: [1]
查看完整版本: .部门内的网络开发