TDS Classic Support

When deploying I receive write access exceptions that eventually crash the application pool, how is this corrected?
If you are running Sitecore 6.5 or above, there was a change in the Sitecore API that requires a fix to the TDS Sitecore Connector. This fix was included in the 4.0 version of TDS. If you are still under maintenance please upgrade your version of TDS, to solve this issue. If you are no longer in maintenance please contact sales,sales@hhog.com, for assistance.
We want to configure the File Replacements feature of TDS Classic to manage multiple Web.config files for different environments. Can we do that with TDS Classic?
We recommend having a common web.config across all our environments and use configSource and App_Config/Includes to manage changes. That being said, you can do web.config replacements with TDS Classic. We usually create a separate project to hold the files for the various configs and have file replacements point at the folder that contains all the replacements for an environment.

Here is an example:
 [customer].Config
              +Debug
              |+web.config  
              |+App.config
              |           +ConnectionStrings.Config
              +Release
                          +web.config
                          +App.config  
                                  +ConnectionStrings.Config
We are trying to configure Team Build (TFS2005) for continuous integration on our project. I can get [our website].Website project to build successfully but not the [our website].Sitecore.scproj. I get the following error message "Could not find required components. The Sitecore.Kernel.Dll, Sitecore.Update.dll, Sitecore.Zip.dll and Sitecore.Logging.dll are needed to build update packages. The path to these files must be set in the "Update Package" tab of the project property page."
You need to specify the path to the required dll's from the property page of your TDS Classic project.

Right click on your TDS Classic project and click on 'Properties.' From there, go to the "Update Package" tab. There is a text box with the label "Sitecore Assembly Path." That textbox should have a relative path to the directory containing the dll's.
I am getting this deployment timeout error: C:\Program Files (x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0\HedgehogDevelopment.SitecoreProject.targets (312): Timeout deploying items /sitecore/templates/common/folder. Deployment Aborting.
There are several possible reasons for this. We recommend that you do/check the following before contacting support:
1.Are there any customizations to Sitecore, such as pipeline steps or dataproviders? These are the usual suspects with deployment timeouts.
2.Take a look at the "publishing targets" in your target cms. Is there a publishing target defined that doesn't exist in your target?
3.Is the target database is trying to grow its data or log file? If the growth is set to 10%, which is the default and the data or log file is really large, the growth time could be really long. If the file is almost full, you may want to grow it manually.

If you have checked 1,2, and 3 above and are still seeing an issue you can try and change the default timeout in the config file.

The config file that controls the deployment timeout, is set to 2 minutes by default. The file is located in the msbuild folder, which is usually called “C:\Program Files (x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0” The config files is called “HedgehogDevelopment.SitecoreProject.Tasks.Dll.config”.

If you still feel the need to contact support, please have the following information ready:
1.Are there any exceptions or things of significance in the Sitecore log file in the /data/log folder and see if there are any errors in the log around the time you are trying to do the deployment?
2.Does the build deploy any items or is the 'folder' template the first thing it tries to deploy?
3.Are you able to use the sitecore desktop on the target instance without a problem?
We need to use different web.configs - I know we can use file replacements to help; but I am not sure if the source should be a config somewhere on my machine and target be within my SVN sourced or in my destination deploy folder.
We have a sample project available that demonstrates how file replacements can be used.

You essentially set the source to a location on your file system. You then can set the target as needed. Typically you would set this to a location on the destination server via UNC path, or you can set it simply as '.\' and this will copy it to the "Build Output Path" and then ultimately end up at the "Sitecore Deploy Folder" (or update package).
I get an Endpoint error while deploying?
Question: I'm doing a deploy and I am getting this error:

 C:\ProgramFiles(x86)\MSBuild\HedgehogDevelopment\SitecoreProject\v9.0\HedgehogDevelopment.SitecoreProject.targets(312,5): error : Endpoint not found when deploying /sitecore/content. Deployment Aborting.

 Answer:The “Endpoint not found” means TDS Classic can’t reach the web service. Either, the service name isn’t
setup correctly for the configuration TDS Classic is trying to build or the url can’t be reached from the build server.
I am getting "Endpoint not found when deploying". How do I get around this?
The “Endpoint not found” means TDS Classic can’t reach the web service. Either, the service name isn’t setup correctly for the configuration TDS Classic is trying to build or the url can’t be reached from the build server.
Can I exclude items that are in TDS Classic when deploying, for example some test content that I have?
Yes. There are two ways of doing this.

First way:
1.In the TDS Classic project explorer select the item that you want to exclude. Right click, and choose properties, or alternatively press F4.
2.In the property window, click on the Exclude Item From property; press the dropdown button in the right-most portion of the property value area for Exclude Item From.
3.Click the check box next to the configuration name you wish to exclude the item

Second Way:
1.In the TDS Classic project explorer select the item that you want to exclude. Right click, and choose Deployment Property Manager (DPM)
2.The DPM shows the Sitecore item you selected along with all items under the selected item. In the Current Config column, there will be two values: Include or Exclude.
3.Clicking on a value under Current Config will allow you to change that value.
4.Selecting a different configuration in the Solutions Configuration dropdown will change the Include/Exclude values under Current Config to match the selected configuration.

Note:
1.Excluding an item from a configuration will exclude all children of that item.
2.Including an item in a configuration will include all parents of that item.
3.A solution configuration may use a project configuration with a name that is different than the solution configuration. Please use the Configuration Manager window to manage this.
What is the Item Deployment property on the Item property page?
This property controls how items are pushed to Sitecore during a deployment. The two possible settings for this property are DeployOnce and AlwaysUpdate.

AlwaysUpdate: The contents Item in the project will always overwrite the values in Sitecore. This is the default. This is typically used on Items that are not considered to be content.

DeployOnce: The Item will be created if it doesn’t exist on Sitecore. If the Item exists in Sitecore, it will not be changed. DeployOnce is typically used to help setup the initial content tree, but once users begin entering and altering content, those nodes are left alone.
I have configured my continuous integration server with my TDS Classic project, but items aren't being deployed. Why?
When you tell MSBuild to build your solution, or TDS Classic project, you need to pass a parameter with it.

Pass the following command line parameter to MSBuild:
IsDesktopBuild=false
How do I deploy to multiple servers in a single environment?
A single TDS Classic project will generate a .update package that would get installed into a Content Management Server (CMS). However, a typical production environment will consist of at least one CMS and 'x' number of Content Delivery (CD) Servers. These CD servers would typically have different configuration files and therefore require some other way to be updated.

In this scenario, we setup TDS Classic with file replacement so that it is building a package for the CM server. We then modify the build definition so that it generates a zip file of all files required for a CD web root. This way, when we do a build we get a .update file for the CMS and a .zip file for the CDS.
Why am I getting "Exception Cannot generate package: '_', hexadecimal value..." when trying to build my update package?
If you are seeing this exception:
Exception Cannot generate package: '_', hexadecimal value 0x03, is an invalid character.(System.Exception):

at Sitecore.Update.Engine.PackageGenerator.GeneratePackage(DiffInfo diff, String licenseFile, String outputPath) at HedgehogDevelopment.SitecoreProject.PackageBuilder.PackageBuilder.BuildPackage(BuildContext ctx)
at HedgehogDevelopment.SitecoreProject.PackageBuilder.Program.Main(String[] args)

It typically is caused by bad character values in one of the .item files. Since this error is thrown by Sitecore, we have no way to trap/handle it better. Please review your items for special characters. This usually happens when someone pastes a text field from a program like word. If you have a good file search tool, you may want to try searching all the .item files for the special character 0x03. Once you find it, you will need to figure out how to remove it from the content and re-sync the content.
We have problems during the installation of generated update packages from TDS Classic. In Sitecore the update process stops at: “Copying files to be installed to solution and backing up overwritten files”
This is usually caused by a permission issue on some of the files you are trying to replace in the target directory. The installer creates a log in the /temp/__UpgradeHistory folder that will give you details about the files that are included in the update package. You need to open that file, identify the files with permission problems, correct the permissions, and re-run the build.
I am having a problem building a TDS Classic Project. What can I do?
The first thing you should do is change the logging options on the build to increase the amount of information in the log. To do this, go to the Tools->Options menu. Select Projects and Solutions/Build and Run. There is a dropdown for “MSBuild project output verbosity” Please set this to “Normal” it is most likely set to “Minimal”.

Do your build and open the “Output Window” Select “Build” in the Show Output From: dropdown. This should have your build output. You should review the output and look for any error messages. If nothing jumps out at you, set the verbosity to "Diagnostic" and try the build again. A word of caution, with the verbosity set to Diagnostic you will get a LOT of information, and it may be tough to wade through it all. This is why we recommend you start by setting the verbosity to "Normal".

The next thing to do is to check the Project dependencies.
 1. Right click on your solution and go to "Project Dependencies"
 2. Choose your TDS Classic Project from the drop down

Does the TDS Classic project have a dependency on your web application project?

If not...
 1. Go to properties of the TDS Classic project
 2. Go to the General tab

Is the "Source Web project" dropdown populated with the web application project?

If so, choose "<none>" and save. Then re-select your web application project and save.

Recheck the project dependencies dialog.

You should also check the Deployment Properties of the Sitecore items. You should set them as “Deploy Once”. Please see Deployment Properties and how they impact deploying items. You can right click on an item in the TDS Classic solution and choose “Deployment Property Manager…” to view/manage these properties all at once instead of working through the property window.

If none of these solutions work, please send us the build output (after changing the verbosity), as well as a copy of the SCPROJ file.
Why am I getting an exception from Sitecore.Update with Sitecore 6.5?
Using Sitecore 6.5 and see this exception while trying to generate an update package?

Exception Could not load file or assembly 'Sitecore.Update, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The given key was not present in the dictionary. (Exception from HRESULT: 0x80131577)(System.IO.FileLoadException):
          at HedgehogDevelopment.SitecoreProject.PackageBuilder.PackageBuilder.BuildPackage(BuildContext ctx)
          at HedgehogDevelopment.SitecoreProject.PackageBuilder.Program.Main(String[] args)

This is a bug with Sitecore's Sitecore.Update.dll. They have a hotfix available here: 

http://dl.sitecore.net/hotfix/Sitecore CMS 6.5.0 rev. 110602 Hotfix 348444-1.zip

What are File Replacements?
File replacements allow the deployment of environment specific files when the TDS Classic project is built. This is useful for files holding connection strings or application settings that may vary from environment to environment. The file replacement tab can push individual files or folders. The source location can be an absolute path or a path relative to the project selected as the web application project.

By allowing for file replacement during builds, TDS Classic allows environment specific configuration files to be placed under Source Code Control.
What is the Recursive Deploy Action?
During deployment, TDS Classic may find items in Sitecore that are not in the project. If TDS Classic determines that those nodes do not belong in the Sitecore database (See Child Item Synchronization), TDS Classic will use the Recursive Deploy Action to resolve the issue. There are 3 possible options:

1.Ignore Sitecore Items not in the Project: This is the default when a project is created. When this is selected, TDS does nothing to the unknown items.

2.Delete Sitecore Items not in the Project: TDS Classic will delete nodes under an items marked for child synchronization (See Child Item Synchronization). They are permanently removed from the database.

3.Move Sitecore Items not in the Project to the Sitecore Recycle Bin: TDS Classic will move nodes under an items marked for child synchronization to the recycle bin (See Child Item Synchronization).
What is SitecoreItem.ChildItemSynchronization ?
These values are the actual items in your Sitecore project. Each of the values in SitecoreItem describe the items in the project. They map back to properties in the items property page.

SitecoreItem.ChildItemSynchronization is the same as the property of the same name
SitecoreItem.Identity is the relative path to the item file
SitecoreItem.ItemDeployment is the same as the property of the same name
SitecoreItem.ExcludeItemFrom is the same as the property of the same name
What is SitecoreItem.ItemDeployment?
These values are the actual items in your Sitecore project. Each of the values in SitecoreItem describe the items in the project. They map back to properties in the items property page.

SitecoreItem.ItemDeployment is the same as the property of the same name SitecoreItem.ChildItemSynchronization is the same as the property of the same name

SitecoreItem.Identity is the relative path to the item file

SitecoreItem.ExcludeItemFrom is the same as the property of the same name
What is SitecoreItem.ExcludeitemFrom?
These values are the actual items in your Sitecore project. Each of the values in SitecoreItem describe the items in the project. They map back to properties in the items property page.

SitecoreItem.ExcludeItemFrom is the same as the property of the same name

SitecoreItem.ItemDeployment is the same as the property of the same name SitecoreItem.ChildItemSynchronization is the same as the property of the same name
  
SitecoreItem.Identity is the relative path to the item file
What is the parameter SitecoreItem.Identity?
These values are the actual items in your Sitecore project. Each of the values in SitecoreItem describe the items in the project. They map back to properties in the items property page.

SitecoreItem.Identity is the relative path to the item file

SitecoreItem.ChildItemSynchronization is the same as the property of the same name SitecoreItem.ItemDeployment is the same as the property of the same name

SitecoreItem.ExcludeItemFrom is the same as the property of the same name

The Complete TDS Classic Manual
This manual is a complete set of documentation you can use while learning TDS Classic. If you find something new, different or needs changing add it through a pull request!
Hedgehog Tools Help
Our TDS Classic Help section is built in to the tool. This will help gives you a granular understanding of each function and feature within TDS Classic.
TDS Classic Cloud Build
A document describing how to build in the VSTS cloud with NuGet TDS Classic build package.
Team City and Octopus with TDS Classic
Integrating TDS Classic with Team City and Octopus.

Continuous Delivery: Kagool and TDS Classic
TDS Classic has allowed Kagool to automate the build of their Sitecore Update Packages as part of a continuous delivery process.
Sync, Deploy & Transfer: Norfolk County Council, TDS Classic and Razl
With TDS Classic, Norfolk County Council syncs all Sitecore development items to source control; they use Razl to transfer and compare Sitecore content items between environments.
Too Many Cooks Spoil the Broth
Whitepaper on the importance of Continuous Integration while working in a team environment.
Build Extensions
Our Whitepaper on how to extend Hedgehog Tools to fit within your environment. Have the most up to date and complete project on the block!