繁体   English   中英

找不到对库的引用

[英]Can't find the reference to a library

尝试将文件从路径A阴影复制到路径B,但它不断抛出错误消息

{“无法加载文件或程序集'AlphaVSS.x64,版本= 1.4.0.0,文化=中性,PublicKeyToken = 959d3993561034e3'或其依赖项之一。尝试加载格式不正确的程序。”}

我尝试的代码

  Public Sub copyFile(baza As String, destination As String)

        If IO.File.Exists(baza) Then

            Dim myFileInfo As FileInfo
            myFileInfo = New FileInfo(baza)

            Dim _volume As String = myFileInfo.Directory.Root.Name

            Dim _vssImplementation As IVssImplementation = VssUtils.LoadImplementation()
            Dim _backup As IVssBackupComponents = _vssImplementation.CreateVssBackupComponents()

            _backup.InitializeForBackup(Nothing)

            _backup.GatherWriterMetadata()

            _backup.SetContext(VssVolumeSnapshotAttributes.Persistent Or VssVolumeSnapshotAttributes.NoAutoRelease)
            _backup.SetBackupState(False, True, Alphaleonis.Win32.Vss.VssBackupType.Full, False)

            Dim MyGuid01 As Guid = _backup.StartSnapshotSet()
            Dim MyGuid02 As Guid = _backup.AddToSnapshotSet(_volume, Guid.Empty)

            _backup.PrepareForBackup()
            _backup.DoSnapshotSet()

            _backup.ExposeSnapshot(MyGuid02, Nothing, VssVolumeSnapshotAttributes.ExposedLocally, "L:")

            Dim sVSSFile2 As String = baza.Replace(_volume, "L:\")

            If (File.Exists(sVSSFile2)) Then
                System.IO.File.Copy(sVSSFile2, destination + "\" + System.IO.Path.GetFileName(baza), True)

                For Each prop As VssSnapshotProperties In _backup.QuerySnapshots
                    If (prop.ExposedName = "L:\") Then
                        Console.WriteLine("File found !")
                        _backup.DeleteSnapshot(prop.SnapshotId, True)
                    End If
                Next

                _backup = Nothing

                Console.WriteLine("File copied")

            Else

                Console.WriteLine("------------------------------------------")
                Console.WriteLine("File not exist: " + baza)

            End If
        End If
    End Sub

我有VSS nuget软件包和参考

在此处输入图片说明

它在网上抛出错误

Dim _vssImplementation As IVssImplementation = VssUtils.LoadImplementation()

阅读文档 使用包装时有要求

  1. 必须在运行任何使用AlphaVSS的应用程序的计算机上安装Visual C ++ 2017可再发行组件

  2. 请注意,如果平台目标设置为任何CPU,则必须使用未选中的 “首选32位”来构建应用程序。 还要注意,您的应用程序必须为64位而构建,才能在64位系统上运行(或任何优先关闭32位的CPU),而必须在32位中才能在32位系统上运行。

最初,我遇到的错误与您相同,直到取消选中“首选32位”,然后该行代码才起作用。

试图加载格式错误的程序

此消息表示您正在尝试加载可执行文件(.dll,.exe等),该文件无法由进程(或Windows本身,视情况而定)运行。

导致此错误的最常见原因是尝试将32位代码加载到64位进程中(反之亦然)。 64位进程只能运行64位代码,而32位进程只能运行32位代码。

由于是AlphaVSS.x64程序集出了问题,因此您的项目很可能被编译为32位可执行文件。 您应该删除该引用, 或者将项目更改为仅针对x64(请注意,如果执行x64,则将无法在32位计算机上运行应用程序)。

手动解决问题。

用自己的记事本打开* .csproj文件

 <PropertyGroup Condition="............">
.....other props...
<!-- Just add the following line here -->
<Prefer32Bit>false</Prefer32Bit>

 </PropertyGroup>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM