【问题标题】:Service Fabric: packaging code error: missing required referencesService Fabric:打包代码错误:缺少必需的引用
【发布时间】:2016-03-08 18:15:43
【问题描述】:

在更新 SF 后,我遇到了一个完全无法使用 SF 的问题,我会尝试用没有代码的文字来解决问题。

Service Fabric 应用程序AppName.SFAppName.SF.StatefulActorAppName.SF.StatefulService 组成。两者都引用了名为 AppName.Core 的类库。

案例 1: StatefulActor 未引用 StatefulService - 包执行正常:

AppName.SF\pkg\Debug\AppName.SF.StatefulActor\Code hasAppName.Core.dll

AppName.SF\pkg\Debug\AppName.SF.StatefulService\Code 拥有AppName.Core.dll

每个包代码文件夹都有AppName.Core.dll。部署成功执行。

案例 2: StatefulActor 引用 StatefulService - 包执行不良:

AppName.SF\pkg\Debug\AppName.SF.StatefulActor\Code 拥有AppName.Core.dll

AppName.SF\pkg\Debug\AppName.SF.StatefulService\Code没有(!) AppName.Core.dll

因此,如果我尝试在集群中部署应用程序,则会收到缺少参考的错误。 SF 更新到 1.4.87-preview 后出现问题。

【问题讨论】:

    标签: azure reference package microservices azure-service-fabric


    【解决方案1】:

    您似乎发现了一个错误 - 我们正在调查。在此期间,如果您使用 msbuild 构建它应该可以工作。

    【讨论】:

    • 您能否解释一下我究竟如何使用 msbuild 来解决问题?
    • 可以使用msbuild.exe /t:package myapp.sfproj打包。
    • 谢谢,它有帮助。我用MSBuild打包然后手动执行Deploy-FabricApplication.ps1。有没有办法将调试器附加到 SF 应用程序,就像我在 VS 中按下开始按钮一样?
    • 不完全是。 F5 具有附加到每个节点上的每个服务的智能。您可以手动附加调试器,但它只会附加到单个节点上的单个服务。
    【解决方案2】:

    对于解决方法,请将以下内容添加到您的应用程序项目 (.sfproj) 文件中:

    <Target Name="CopyExtraPackageFiles" AfterTargets="Package">
        <Copy SourceFiles="..\AppName.Core\bin\$(Configuration)\AppName.Core.dll"
              DestinationFolder="pkg\$(Configuration)\AppName.SF.StatefulService\Code" />
    </Target>
    

    这对您的 AppName.Core 项目的位置做了一些假设。必要时调整路径。

    这将手动将 AppName.Core.dll 复制到包中缺少它的适当位置。

    编辑: 或者试试这个作为通用解决方法,而不是上面的代码 sn-p。让我知道它是否有效。

    <Target Name="EnsureProjectReferencesAreConfigured" BeforeTargets="GetCopyToOutputDirectoryItems">
      <MSBuild
          Condition=" '@(ServiceProjectReference)' != '' "
          Projects="@(ServiceProjectReference)"
          Targets="AssignProjectConfiguration"
          Properties="Configuration=$(Configuration);Platform=$(Platform)" />
    </Target>
    

    【讨论】:

    • 谢谢。在实际解决方案中,引用的 dll 太多。什么时候可以修复?是否等待下一次重大更新?
    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多