A Bit of Background
TcmUploadAssembly.exe is a utility program that allows you to upload a DLL into the SDL Tridion Content Manager. It does the following:
Why the PDB?
To put it simply, without the PDB, you won't be able to debug your code. A PDB file contains information about the source file names with line numbers and the local variable names. So, without a PDB, you won't know in which file the particular class is and at which line your execution pointer is. You will only know the name of the class and method you are in. That is not enough information a debugger can go by.
You can find a techie, yet excellent article here PDB Files: What Every Developer Must Know.
TcmUploadAssembly.exe is a utility program that allows you to upload a DLL into the SDL Tridion Content Manager. It does the following:
- Create a TBB (of type .NET Assembly) that holds the actual .NET DLL;
- Create a TBB (of type C# Code Fragment) for each class in the .NET DLL that implements the ITemplate interface;
- Optionally, creates Parameter Schemas and associates them with the individual template TBBs;
- Optionally, uploads the PDB corresponding to the .NET DLL;
The following command line arguments are accepted:
Usage: TcmUploadAssembly [options] [ConfigurationFilePath] [AssemblyPath]
ConfigurationFilePath The location where the configuration file for this
tool can be found.
AssemblyPath The location of the assembly to be uploaded.
Basic Options:
/verbose Output extra debug information.
/help Print this message.
Overriding Options (overriding either assembly or configuration file values):
/folder:tcmuri Override the folder to store the assembly
specified in the assembly.
/targeturl:cmsurl Override the target url of the CMS
specified in the configuration file.
/username:nameofuser Override the username to use in authentication
with the web service.
/password:clearpassword Override the password to use in authentication
with the web service.
/uploadpdb:true|false Override whether the PDB should be uploaded from
together with the assembly.
/timeout:in seconds Override the time it needs to upload the assembly
to the web service.
Why the PDB?
To put it simply, without the PDB, you won't be able to debug your code. A PDB file contains information about the source file names with line numbers and the local variable names. So, without a PDB, you won't know in which file the particular class is and at which line your execution pointer is. You will only know the name of the class and method you are in. That is not enough information a debugger can go by.
You can find a techie, yet excellent article here PDB Files: What Every Developer Must Know.
Without a PDB, a stack trace would look something like this (I'm attempting a division by zero in my code to yield an exception):
Attempted to divide by zero.
at CwaReferenceImplementation.Templates.Generic.FormatDate.Transform(Engine engine, Package package)
While with the PDB present, the exact same code shows the following stack trace:
Attempted to divide by zero.
at CwaReferenceImplementation.Templates.Generic.FormatDate.Transform(Engine engine, Package package) in C:\Reference Implementations\CWA Reference Implementation\Tridion Templates\Reference Implementation Templates\Generic\FormatDate.cs:line 25
TcmUploadAssembly will upload the PDB either to C:\temp or to %TRIDION_CM_HOME%\temp.
Comments