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

Ssis 在MSBuild扩展包中使用BuildDeploymentManifest任务时出错,ssis,msbuild,Ssis,Msbuild,作为CI过程的一部分,我正在尝试为SSIS项目创建清单文件。我发现我应该能够使用中的BuildDeploymentManifest任务来完成这项工作 通过创建调用此任务的MSBuild文件并传入SSIS项目文件,我在本地开发人员计算机上成功地实现了这一点。输出正是我想要的,即.dtsConfig和.dtsx文件被复制到输出文件夹,并生成清单文件 但是,当我将其添加到CI系统中时,会出现以下错误: error MSB4018: The "MSBuild.ExtensionPack.SqlServe

作为CI过程的一部分,我正在尝试为SSIS项目创建清单文件。我发现我应该能够使用中的BuildDeploymentManifest任务来完成这项工作

通过创建调用此任务的MSBuild文件并传入SSIS项目文件,我在本地开发人员计算机上成功地实现了这一点。输出正是我想要的,即.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)
错误MSB4018:“MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest”任务意外失败。
错误MSB4018:System.IO.IOException:设备未就绪。
错误MSB4018:
错误MSB4018:at System.IO.\u error.WinIOError(Int32 errorCode,字符串maybeFullPath)
错误MSB4018:位于System.IO.File.InternalCopy(字符串sourceFileName、字符串destFileName、布尔覆盖)
错误MSB4018:位于System.IO.File.Copy(字符串sourceFileName、字符串destFileName、布尔覆盖)
错误MSB4018:位于C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.CreateElementForFileAndCopy(字符串文件类型、字符串源路径、字符串目标路径)中的MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest.cs:第158行
错误MSB4018:位于c:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.cs第124行中的MSBuild.ExtensionPack.SqlServer.SqlServer.BuildDeploymentManifest.c_uuDisplayClass18.b_uA(f_uuuAnonymousType1`2 h_uTransparentId标识符1)处
错误MSB4018:位于System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()处
错误MSB4018:位于System.Xml.Linq.XContainer.AddContentSkipNotify(对象内容)处
错误MSB4018:位于System.Xml.Linq.XContainer.AddContentSkipNotify(对象内容)处
错误MSB4018:位于C:\Projects\CodePlex\MSBuildExtensionPack\Solutions\Main3.5\Framework\SqlServer\BuildDeploymentManifest.cs中的MSBuild.ExtensionPack.SqlServer.BuildDeploymentManifest.Execute()处:第103行
错误MSB4018:位于Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ItaskeExecutionHost.Execute()处
错误MSB4018:位于Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstallatedTask(ITaskExecutionHost taskExecutionHost、TaskLoggingContext TaskLoggingContext、TaskHost TaskHost、ItemBucket bucket、TaskExecutionMode howToExecuteTask、Boolean和taskResult)

有没有想过是什么导致了这一切?调用在我的开发虚拟机上运行的构建文件的批处理文件可以正常工作。我已经尝试排除了反病毒引起的问题,我已经关闭了它们,但仍然出现了相同的错误。

好的,看来在花了一些时间与同事深入研究之后,我将能够回答我自己的问题

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

希望这对别人有帮助

加里