[SOLVED] Problem using BuildDeploymentManifest

Sep 6, 2013 at 9:10 AM
Hello,

As part of my CI process, I am trying to create the manifest file for an SSIS Project. I have found that I should be able to use the BuildDeploymentManifest Task in the Extension Pack to do this. I have succeeded on my local developer machine to achieve this by creating an MSBuild file calling this task and passing in the SSIS Project File. The output is exactly what I want.

However, when I add this into my CI system, I get the following error:
error MSB4018: The "MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest" task failed unexpectedly.
error MSB4018: System.IO.IOException: The device is not ready.
error MSB4018: 
error MSB4018:    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
error MSB4018:    at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
error MSB4018:    at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
error MSB4018:    at MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest.CreateElementForFileAndCopy(String fileType, String sourcePath, String destinationPath) in C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.cs:line 158
error MSB4018:    at MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest.<>c__DisplayClass18.<Execute>b__a(<>f__AnonymousType1`2 <>h__TransparentIdentifier1) in C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.cs:line 124
error MSB4018:    at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
error MSB4018:    at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
error MSB4018:    at System.Xml.Linq.XContainer.AddContentSkipNotify(Object content)
error MSB4018:    at MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest.Execute() in C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.cs:line 103
error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)
Any thoughts on what could be causing this? The exact batch file which calls the build file running on my development VM works. I have tried to rule out things like Anti Virus causing problems, and I have switched them off, but still the same error occurs.

Thanks

Gary
Coordinator
Sep 10, 2013 at 8:46 AM
Hi Gary

Could you post the code you are using.

Mike
Sep 10, 2013 at 9:12 AM
Hello Mike,

Thanks for getting back to me, but I was able to figure out what was going on last night. I worked through this with a colleague and figured it out.

Within the *.dtsx there is a path to the location of the configuration file associated with it. This hard coded path was looking at the D:\ drive, which exists on my machine, but not of the build server (well at least not as a physical hard drive, but rather as a DVD Drive). As a result, it was trying to read a file from the DVD Drive, and that is what was causing the Device Is Not Ready error. I modified the *dtsx file to use a relative path, rather than an absolute one, and everything now seems to be working! :-)

Thanks

Gary
Marked as answer by mikeFourie on 10/9/2013 at 3:14 PM
Coordinator
Sep 10, 2013 at 9:18 AM
Great!