我不能完全肯定都爲什麼會這樣...... 所以我有一個ExternalCommand和製造功能區選項卡和按鈕的應用程序。這兩個程序在相同的解決方案中,並在相同的命名空間下,這使我可以處理更少的文件。當我爲我的命令創建按鈕時,我想要放入當前正在運行的應用程序的當前路徑。我這樣做與Directory.GetCurrentDirectory() + \AddInsAll\Ribbon17.dll
(其中AddInsAll是文件夾和Ribbon17是DLL,很明顯)。必要時使用@來避免轉義序列。該字符串包含所需的確切程序集名稱,但Revit告訴我「程序集不存在」。如果我用硬編碼的C:\ProgramData\Autodesk\Revit\Addins\2017\AddInsAll\Ribbon17.dll
代替這個String變量,它就可以工作。我希望它明顯比這更強大。我的代碼將在下面,在此先感謝。的Revit API:使用String作爲按鈕組件名稱與當前路徑
FYI:我有一個TaskDialog其實表示時,第一次運行,並且它返回FULLPATH是exacly一樣的硬編碼路徑。由於get目錄中存在一些奇怪的錯誤,我必須進行替換(Program Files到ProgramData)。另外,我想補充「\ AddInsAll \ Ribbon17.dll」字符串的結尾,因爲使用currentDirectory只能進入加載項\ 2017年。最後,如果你認爲問題是由於@的,我已經嘗試把它和取下來的變量,沒有嘗試的工作。但是如果你認爲它們是問題,我很歡迎這個建議。謝謝。
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");
謝謝你的迴應,我會試試這些 –
出於某種原因使用Assembly來獲取路徑而不是Directory.GetCurrentDirectory似乎已經修復它。謝謝!現在我所有的加載項都只在一個文件中。 :) –
'Directory.GetCurrentDirectory'可能不是你想要的呢。那甚至指向什麼?它高度依賴於不受您控制的事物。提示:Revit開始的當前目錄。取決於Revit的開始方式... –