Kinook Software Forum

Kinook Software Forum (https://www.kinook.com/Forum/index.php)
-   [VBP] General Discussion (https://www.kinook.com/Forum/forumdisplay.php?f=2)
-   -   Expanding a macro in a custom action (https://www.kinook.com/Forum/showthread.php?t=5529)

kumaichi 04-10-2018 02:18 PM

Expanding a macro in a custom action
 
I created a global macro:



Path, including the exe file to your local systems TF.exe
%DEVSTUDIO_NET_DIR%\Common7\IDE\TF.exe



Inside my custom action (C#), I try to expand the macro like so:
IMacros macros = builder.App.get_Macros( MacroTypeEnum.vbldMacroGlobal );
builder.LogMessage( builder.App.ExpandMacros( Convert.ToString( macros[ "TF_EXE_PATH" ].Value ) ) );

When I run my step, I get the following error:
Exception: System.NotImplementedException: The method or operation is not implemented.
at System.Runtime.InteropServices.Marshal.ThrowExcept ionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Dynamic.ComRuntimeHelpers.CheckIfMissingTyp eInfoIsExpected(Int32 hresult, Boolean throwIfMissingExpectedTypeInfo)
at System.Dynamic.ComRuntimeHelpers.GetITypeInfoFromI Dispatch(IDispatch dispatch, Boolean throwIfMissingExpectedTypeInfo)
at System.Dynamic.IDispatchComObject.EnsureScanDefine dMethods()
at System.Dynamic.IDispatchComObject.System.Dynamic.I DynamicMetaObjectProvider.GetMetaObject(Expression parameter)
at System.Dynamic.DynamicMetaObject.Create(Object value, Expression expression)
at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel)
at System.Runtime.CompilerServices.CallSiteBinder.Bin dCore[T](CallSite`1 site, Object[] args)
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at CallSite.Target(Closure , CallSite , Application , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1)
at VersionManager.Manager.CheckoutAIFile(String AssemblyInfoPath, IStep step, Builder builder)

I've tried using:
builder.ExpandMacros(...)
builder.App.ExpandMacros(...)
builder.App.ExpamdMacrosAndScripts(...)

All of them say that the method isn't implemented.

Any suggestions I could try?

Thanks,

Craig

kinook 04-10-2018 07:34 PM

I'm not sure -- I added the following line to the NETAction user sample (Samples\User Actions\NETAction):

Code:

builder.LogMessage(builder.App.ExpandMacrosAndScript("%VISBUILDDIR%"));
and it logged

C:\Program Files\VisBuildPro9

when built.

Does it work for you?

kumaichi 04-10-2018 08:10 PM

If I run your code, it writes out the same string that you posted. I noticed that you're not getting the macro prior to calling the ExpandMacro method so I tried this:

builder.App.ExpandMacros( "%TF_EXE_PATH%" );

And that worked, so I'm not sure what's wrong with my method but it works so hopefully someone can learn from my issue.

Thanks for the quick response.

kinook 04-10-2018 09:19 PM

This also worked:

Code:

IMacros macros = builder.App.get_Macros(MacroTypeEnum.vbldMacroAll);
builder.LogMessage(builder.App.ExpandMacrosAndScript(macros["VISBUILDDIR"].Value.ToString()));



All times are GMT -5. The time now is 06:08 PM.


Copyright © 1999-2023 Kinook Software, Inc.