乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 121|回复: 6

[编程交流] .部门内的网络开发

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 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的老板之外,他有时会同时运行其中一个或另一个版本,有时会同时运行这两个版本。。。取决于他的工作量和心情。他们希望我为这个部门开发代码,这个部门遵循如此严格的标准。。。。大声笑!
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:20:14 | 显示全部楼层
 
我不知道你说的“2013参考”是什么意思?
 
 
 
 
你可以编写应用程序代码,使用字段、属性或方法有条件地返回适当的引用,或者只使用dynamics,不是吗?
 
 
 
 
如果您不想依赖RoamablerOutprefix或注册表等,您可以考虑:
 
  1. Process process = <get your process here>;
  2. process .Modules[0].FileName;

 
 
 
干杯
回复

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 22:24:57 | 显示全部楼层
比尔,你有没有调查过晚装?这应该获取正在运行的AutoCAD版本,然后识别它并运行适当的软件。
 
BB,你是如何让你的应用程序在不同版本的AutoCAD上运行的,你肯定不会为每个版本写一个应用程序?
 
最好的
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 22:35:27 | 显示全部楼层
 
是的,一定要说。
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 22:47:01 | 显示全部楼层
 
FWiW-
 
早期/晚期绑定可以用动态替换,动态从本质上消除了x86/x64依赖性。
 
我只在版本依赖COM/Platform或AutoCAD API需要时构建不同的应用程序。
 
 
 
作为一个快速示例,这适用于使用Autodesk的2010-2011年(.NET 3.5)。AutoCAD。互操作(依赖于COM/Platform;导致x86、x64版本):
 
  1.                //...
  2.                AcadDocument acDoc = doc.AcadDocument as AcadDocument;
  3.                acDoc.GetType().InvokeMember("StartUndoMark",
  4.                    BindingFlags.InvokeMethod, null, acDoc, null);
  5.                //... Do something useful
  6.                acDoc.GetType().InvokeMember("EndUndoMark",
  7.                    BindingFlags.InvokeMethod, null, acDoc, null);
  8.                //...

 
 
 
... 对于AutoCAD 2012-2015(及更高版本?)可以替换为该版本(.NET 4)做同样的事,用纯。NET(没有COM程序集引用,可以构建到“任何CPU”):
 
  1.                //...
  2.                dynamic acDoc = doc.GetAcadDocument();
  3.                acDoc.StartUndoMark();
  4.                //... Do something useful
  5.                acDoc.EndUndoMark();
  6.                //...

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

使用道具 举报

29

主题

519

帖子

477

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 22:56:01 | 显示全部楼层
谢谢你的BB,我不知道动力学啤酒::啤酒:
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 23:09:28 | 显示全部楼层
 
直到去年,我也没有这样做,一旦我得到了它,它真的给我留下了深刻的印象。
 
您可能还对C#6语言增强的概述感兴趣。
 
干杯
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 08:38 , Processed in 0.500978 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表