Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio &引用;进程无法访问文件';Default.rd.xml';因为它正被另一个进程使用。”;论测量师CI_Visual Studio_Cordova_Appveyor_Cordova Windows - Fatal编程技术网

Visual studio &引用;进程无法访问文件';Default.rd.xml';因为它正被另一个进程使用。”;论测量师CI

Visual studio &引用;进程无法访问文件';Default.rd.xml';因为它正被另一个进程使用。”;论测量师CI,visual-studio,cordova,appveyor,cordova-windows,Visual Studio,Cordova,Appveyor,Cordova Windows,我正在cordova windows上做一些工作,它使用AppVeyor在windows上进行测试。缺少的东西之一是Visual Studio 2017的测试(以前只有VS2015用于测试)。所以我加上了这些,它就像一个符咒——主要是 不幸的是,我们现在有一个非常奇怪的测试失败: 当我在本地运行测试时,这种情况不会发生,这意味着我无法重现这里发生的情况 知道什么进程可以阻止这个Default.rd.xml文件或build\windows\bld\PackageUploadLayout\? 在A

我正在cordova windows上做一些工作,它使用AppVeyor在windows上进行测试。缺少的东西之一是Visual Studio 2017的测试(以前只有VS2015用于测试)。所以我加上了这些,它就像一个符咒——主要是

不幸的是,我们现在有一个非常奇怪的测试失败:

当我在本地运行测试时,这种情况不会发生,这意味着我无法重现这里发生的情况

知道什么进程可以阻止这个
Default.rd.xml
文件或
build\windows\bld\PackageUploadLayout\

在AppVeyor这样的CI环境中,我如何找到答案


更新:

通过将
/clp:Verbosity=normal
添加到执行的
msbuild
调用,进行了更多的研究

它运行类似的
msbuild
调用3次(每个体系结构一次)。第一次成功,但第二次失败。这是有意义的,因为在第一次迭代中,文件夹还不存在,它通过以下输出确认:
目录“build\windows\bld\PackageUploadLayout\”不存在。正在跳过。

失败之前的最后一个输出是
删除目录“build\windows\bld\PackageUploadLayout\”
,该目录与我们在错误消息中得到的目录相匹配。但是,没有迹象表明为什么移除不起作用


超级奇怪:将
/clp:Verbosity=detailed
添加到
msbuild
调用中,构建实际上成功了!我的猜测是:因为输出需要时间,所以锁定文件夹或文件的任何东西都会释放它。

这不是确切的答案,而是调查报告。这仅仅是不够的房间评论来描述它。以下是我所做的:

  • 用叉子叉你的回购
  • 创建AppVeyor项目
  • 增加
  • 与RDP连接
  • 安装
  • 添加了筛选器以监视以
    bld\PackageUploadLayout\Properties\Default.rd.xml
  • 从CMD手动运行npm测试
当同样的错误发生时,我看到:

我不确定我是否理解msbuild为何以这种方式失败。我打开了
共享违规事件,切换到流程,看到以下内容:


吸引我注意的是,
msbuild
version是14。在Visual Studio 2017图像上应为15。我们为特定场景安装了版本14,但默认版本是15(运行
其中msbuild
,您将看到
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\msbuild\15.0\Bin\msbuild.exe
)。我不确定此路径在脚本中设置在何处,但我觉得如果您使其正确运行
msbuild
version,这可能会有所帮助。

非常感谢。MSBuild选择代码现在确实非常不稳定,从VS13发展到15,现在也发展到17。。。但我现在有了解决这个问题的办法!不幸的是,MSBuild 15.0(来自VS17)[+新的测试无关失败…]也存在同样的问题:
C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\AppxPackage\Microsoft.AppxPackage.Targets(3212,5):错误MSB3231:无法删除目录“build\windows\bld\PackageUploadLayout\”。进程无法访问文件“Default.rd.xml”,因为另一个进程正在使用该文件。[C:\projects\cordova windows\testcreate???\CordovaApp.Windows10.jsproj]
在发生错误之前,您有没有办法对该文件运行
handle.exe
?它可以显示更多关于文件使用的信息,甚至可以以奇怪的方式修复问题。查看此帖子:不幸的是,这是一个生成
.jsproj
msbuild
调用-之前或之后都不会触及文件夹和文件,都是在生成过程中进行的:/example:
C:\Program Files(x86)\Microsoft Visual Studio\2017\Community\msbuild\15.0\Bin\msbuild['C:\\projects\\cordova windows adhdo\\testcreate応用\\CordovaApp.Windows10.jsproj','/clp:NoSummary;NoItemAndPropertyList;Verbosity=minimal','/nologo','/p:Configuration=release','/p:Platform=x86','/p:CordovaBundlePlatforms=x86','/p:UapAppxPackageBuildMode=StoreUpload']{stdio:'inherit'}
Started
Creating Cordova Windows Project:
    Path: testcreate 応用
    Namespace: com.test.app
    Name: 応用
Windows project created with cordova-windows@5.1.0-dev
Building project: C:\projects\cordova-windows\testcreate 応用\CordovaApp.Windows10.jsproj
    Configuration : release
    Platform      : x64
  Patching 10 in prebuild event...
  Injected base.js reference to the www/index.html
  Removing /( *)(<script\s+(?:type="text\/javascript"\s+)?src="\/\/Microsoft.WinJS.2.0\/js\/base.js">\s*<\/script>)(\s*)/ from www/index.html
  Removing /( *)(<script\s+(?:type="text\/javascript"\s+)?src="\/\/Microsoft.Phone.WinJS.2.1\/js\/base.js">\s*<\/script>)(\s*)/ from www/index.html
  CordovaApp.Windows10 -> C:\projects\cordova-windows\testcreate ??\build\windows\release\x64\win10\CordovaApp.Windows10_1.0.0.0_x64.appx
  CordovaApp.Windows10 -> C:\projects\cordova-windows\testcreate ??\build\windows\release\x64\win10\Upload\CordovaApp.Windows10_1.0.0.0_x64.appx
  CordovaApp.Windows10 -> C:\projects\cordova-windows\testcreate ??\AppPackages\CordovaApp.Windows10_1.0.0.0_Test\CordovaApp.Windows10_1.0.0.0_x64.appxbundle
  CordovaApp.Windows10 -> C:\projects\cordova-windows\testcreate ??\AppPackages\CordovaApp.Windows10_1.0.0.0\CordovaApp.Windows10_1.0.0.0_x64.appxbundle
  CordovaApp.Windows10 -> C:\projects\cordova-windows\testcreate ??\AppPackages\CordovaApp.Windows10_1.0.0.0_x64_bundle.appxupload
  Your package has been successfully created.
Building project: C:\projects\cordova-windows\testcreate 応用\CordovaApp.Windows10.jsproj
    Configuration : release
    Platform      : x86
  Patching 10 in prebuild event...
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2975,5): error MSB3231: Unable to remove directory "build\windows\bld\PackageUploadLayout\". The process cannot access the file 'Default.rd.xml' because it is being used by another process. [C:\projects\cordova-windows\testcreate ??\CordovaApp.Windows10.jsproj]
C:\projects\cordova-windows\testcreate 応用\cordova\node_modules\q\q.js:155
                throw e;
                ^
Error: C:\Program Files (x86)\MSBuild\14.0\bin\msbuild.exe: Command failed with exit code 1
    at ChildProcess.whenDone (C:\projects\cordova-windows\testcreate 応用\cordova\node_modules\cordova-common\src\superspawn.js:169:23)
    at emitTwo (events.js:106:13)
    at ChildProcess.emit (events.js:191:7)
    at maybeClose (internal/child_process.js:920:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:230:5)
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\AppxPackage\Microsoft.AppXPackage.Targets(2975,5): error MSB3231: Unable to remove directory "build\windows\bld\PackageUploadLayout\". The process cannot access the file 'Default.rd.xml' because it is being used by another process. [C:\projects\cordova-windows\testcreate ??\CordovaApp.Windows10.jsproj]