在MSBuild扩展包中使用BuildDeploymentManifest任务时出错

时间:2013-09-09 08:55:41

标签: ssis msbuild

作为CI流程的一部分,我正在尝试为SSIS项目创建清单文件。我发现我应该可以使用MSBuild Extension Pack中的BuildDeploymentManifest任务来执行此操作。

我在本地开发人员机器上成功实现了这一点,方法是创建一个调用此任务并传入SSIS项目文件的MSBuild文件。输出正是我想要的,即.dtsConfig和.dtsx文件被复制到输出文件夹,并生成清单文件。

但是,当我将其添加到CI系统中时,我收到以下错误:

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)

有关可能导致此问题的任何想法?调用在我的开发VM上运行的构建文件的确切批处理文件可以正常工作。我试图排除反病毒导致问题等问题,我已将其关闭,但仍然会出现同样的错误。

1 个答案:

答案 0 :(得分:0)

好的,看起来我花了一些时间与同事一起探讨这个问题后能够回答我自己的问题。

在* .dtsx中,有一个指向与之关联的配置文件位置的路径。这个硬编码路径正在查看D:\驱动器,它存在于我的开发人员计算机上,但不存在于构建服务器上(至少不是作为物理硬盘驱动器,而是作为DVD驱动器)。结果,它试图从DVD驱动器读取文件,这就是导致“设备未就绪”错误的原因。我修改了* dtsx文件以使用相对路径,而不是绝对路径,现在看来一切正常! : - )

希望这有助于某人!

加里