Service Fabric:打包代码错误:缺少必需的引用

时间:2015-12-03 22:50:52

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

更新SF之后我遇到了一个完全阻止使用SF的问题,我会试着用没有代码的单词来解决问题。

服务架构应用AppName.SFAppName.SF.StatefulActorAppName.SF.StatefulService组成。两者都引用了名为AppName.Core的类库。

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

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

AppName.SF\pkg\Debug\AppName.SF.StatefulService\CodeAppName.Core.dll

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

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

AppName.SF\pkg\Debug\AppName.SF.StatefulActor\CodeAppName.Core.dll

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

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

2 个答案:

答案 0 :(得分:4)

看起来你发现了一个错误 - 我们正在调查。在此期间,如果使用msbuild进行构建,它应该可以工作。

答案 1 :(得分:1)

要解决此问题,请将以下内容添加到应用程序项目(.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复制到包中缺少的位置。

修改 或者尝试将其用于通用解决方法而不是上面的代码段。如果有效,请告诉我。

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