我完全不确定为什么会发生这种情况......
所以我有一个ExternalCommand和一个用于制作功能区选项卡和按钮的应用程序。这两个程序在同一个解决方案中并位于相同的命名空间下,这使我可以处理更少的文件。当我为我的命令创建一个按钮时,我想要放入当前正在运行的应用程序的当前路径。我用Directory.GetCurrentDirectory() + \AddInsAll\Ribbon17.dll
执行此操作(其中AddInsAll是文件夹,而Ribbon17显然是dll)。我在必要时使用@来避免转义序列。此字符串包含所需的确切程序集名称,但Revit告诉我“程序集不存在”。如果我用硬编码的C:\ProgramData\Autodesk\Revit\Addins\2017\AddInsAll\Ribbon17.dll
替换这个String变量,它就可以工作。我希望它显然比那更强大。我的代码将在下面,提前感谢。
仅供参考:我有一个TaskDialog显示它第一次运行时,它返回的fullPath与硬编码路径非常相似。由于get目录存在一些奇怪的错误,我必须进行替换(Program Files to ProgramData)。此外,我将“\ AddInsAll \ Ribbon17.dll”添加到字符串的末尾,因为CurrentDirectory仅发送到Addins \ 2017。最后,如果你认为这个问题是由@s引起的,那么我已经尝试过将它从变量中删除,并且没有任何尝试可行。但如果你认为它们是问题,我欢迎这个建议。感谢。
public class RibApp : IExternalApplication
{
public Result OnStartup(Autodesk.Revit.UI.UIControlledApplication application)
{
// Create a custom ribbon tab
String tabName = "Add-Ins";
String fakeFullPath = @Directory.GetCurrentDirectory() + @"\AddInsAll\Ribbon17.dll";
String fullPath = fakeFullPath.Replace(@"\Program Files\", @"\ProgramData\");
TaskDialog.Show("Hi", @fullPath);
application.CreateRibbonTab(tabName);
//Create buttons and panel
// Create two push buttons
PushButtonData CommandButton = new PushButtonData("Command17", "Command",
@fullPath, "Ribbon17.Command");
答案 0 :(得分:0)
我建议你跳过@并用正斜杠替换每个反斜杠\ /。
KISS!
更好的是,使用类似于HoloLens Escape Path Waypoint JSON Exporter中CreateRibbonTab
实现的方法。