View Full Version : Creating Custom Actions for VBP 8
HippyCraig
03-21-2012, 09:00 AM
In previous version I have a custom action that I pass a list of labels to and a custom VB dialag box appears that displays that list in a drop down, once selected it updates a macro in the calling script and continues. This works fine in Version 7, I just installed Version 8 on a new workstation and I want to upgrade that action to work with the newer version of Visual Build. Now that I got the background out, I will get to my questions:
First I want to write my action using VS2010 and Framwork 4.0 is this supported?
Second, since I have to refrence VisBuildSvr, I want to create two action one to support 32 bit and one for 64 bit. Do I need to create two seperate solutions one for each since some build machines are 32 bit only. Would I need the appropreate version of VBP installed in order to build each type?
Any suggestions would be great!
kinook
03-21-2012, 12:14 PM
My testing suggests you need to target .NET 2.0 (will have to investigate further to see if it's possible to support 4.0).
If you use Any CPU for the platform, the compiled .NET action can be registered and used in 32- or 64-bit Visual Build, but I suspect that actions with a user interface will not work properly in the 64-bit edition.
HippyCraig
03-21-2012, 12:41 PM
Thanks, I will give it a try an let you know
HippyCraig
04-04-2012, 12:51 PM
I am working on creating a new version, when attempting to run a BLD file that registers the DLL I get the following error from within VB8
4/4/2012 1:51:20 PM: Building project step 2 - Register DLL...
RegAsm : error RA0000 : An error occurred while writing the registration information to the registry. Administrator permissions are needed to use the selected options. Use an administrator command prompt to complete these tasks.
Process completed with exit code 100
4/4/2012 1:51:20 PM: Step '2 - Register DLL' failed
4/4/2012 1:51:20 PM: Build ended (elapsed = 00:00:00).
HippyCraig
04-04-2012, 12:56 PM
I fogot to add the acutal command line thats run, it appears to defualt to the highest framword version installed on the box. The assembly is trageting the 2.0 framwork
C:\Windows\Microsoft.NET\Framework\v4.0.30319\rega sm.exe C:\TFS\SCM\Dev\ACE.VisualBuild.Solution-DEV1\ACE.VisualBuild.SelectVersion\bin\Release\ACE .VisualBuild.SelectVersion.dll /nologo /s /codebase
kinook
04-04-2012, 01:03 PM
regasm does require elevated privileges to register a COM assembly.
http://kinook.com/Forum/showthread.php?t=2258
The COM Register action use the highest installed framework version that is found for locating regasm.exe. You can override the regasm.exe on the Register tab.
http://www.kinook.com/VisBuildPro/Manual/comregister.htm
HippyCraig
04-04-2012, 02:30 PM
Great, thanks for the quick turn around!
HippyCraig
04-05-2012, 12:24 PM
I found as I created a new action and compared the scripts with my previos version there appears to be a new property that I cant find information on. If I open up a build file I see the following property added to my custom action.
<buildfailsteps type='11'>0</buildfailsteps>
If I try to add exisitng actions to the same script the added actions also have this value added but the exisiting actions do not get modified when saving to have this new propery.
Can you tell me more about this and what the values represent?
kinook
04-05-2012, 12:56 PM
That property determines whether failure steps are built if an occurs when building that step (corresponds with the 'Build failure steps' option on the More tab of the step properties dialog).
You may need to re-download and install the latest build -- there was a bug in the initial release that caused checking, then unchecking of this option to not get persisted properly in the .bld file.
HippyCraig
04-05-2012, 01:40 PM
I just downloaded the latest build and I still see that behavoir, it only adds it to new items added to the script but the exisitng actions do not get updated. I am viewing the BLD file in Notepad++, just so you know were I am seeing this change from.
Is there any details about this setting? What properties in the GUI affect this value, I tried changing some values in the GUI and it it disappears if I try and change anything from the default.
Visual Build Professional 8.0
Windows Version: 6.1.7601.1.0
Install path: C:\Program Files (x86)\VisBuildPro8
HideConsole.exe version 1.0.0.0
SftPrintPreview_IX86_U_20.dll version 2.04
VisBuildCmd.exe version 8.0.0.2
VisBuildPro.exe version 8.0.0.2
VisBuildAct.dll version 8.0.0.3
VisBuildCore.dll version 8.0.0.3
VisBuildDotNET.dll version 8.0.0.1
VisBuildExt.dll version 8.0.0.3
VisBuildMisc.dll version 8.0.0.3
VisBuildMS.dll version 8.0.0.3
VisBuildMS2.dll version 8.0.0.2
VisBuildNet.dll version 8.0.0.3
VisBuildSvr.dll version 8.0.0.4
VisBuildSvr.Interop.dll version 1.0.0.0
VisBuildVCS.dll version 8.0.0.3
kinook
04-05-2012, 01:44 PM
That property will only be stored in the .bld file if unchecked (false). When a property is set to its default value, it is not stored in the .bld file to save space.
HippyCraig
04-06-2012, 08:22 AM
So if the default value for this is to be checked when I add an action to my scripts I should expect this value to be checked when I check the "More" tab.
What I am seeing is when I add a new action, this value is NOT checked when created, like the default value would be off.
I hope I explained that correctly.:)
kinook
04-06-2012, 09:35 AM
In v8, the default for that property is unchecked. You can copy, paste, and rebuild this step in a project to set the property to true/checked for all steps:
<step action='Run Script'>
<Language>VBScript</Language>
<Script><![CDATA[' process all steps in project
For i = 0 To vbldStepSubroutine
' iterate over all steps in the collection
For Each s In Project.Steps(i)
' set to build failure steps on failure
s.Property("buildfailsteps") = True
Next
Next]]></Script>
<name>Set failure option</name>
</step>
HippyCraig
04-06-2012, 10:24 AM
Ok thanks for the script, I am still a little confused. This is just so I can understand the way it stores data.
If the default value for this is to be unchecked, than based off what you said I shouldnt see a value stored in the BLD file, viewing it in a text editor, because this is the default value.
What I am seeing is that if its set to the default of uncheck it stores this value in the BLD file and if its checked which is opposited the default the tag is not stored.
kinook
04-06-2012, 10:50 AM
Legacy code is the short explanation. The long explanation: Because the default value for this property used to be true, that is still the "default" as used to determine whether to store the value in the .bld file. When inserting a new step, the step's buildfailstep property is explicitly set to false (the new "real" default), and this value gets stored in the .bld file since it is not the "default" as described above. If the step is checked, it has the old "default" value which does not get stored in the file.
HippyCraig
04-06-2012, 11:41 AM
Ok so this is to support backward compatiablitly, that make sense. Thanks for taking the time to explain it.
vBulletin® v3.8.11, Copyright ©2000-2024, vBulletin Solutions Inc.