1

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

Service Fabric 应用程序AppName.SFAppName.SF.StatefulActor和组成AppName.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 后出现问题。

4

2 回答 2

4

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

于 2015-12-04T16:41:30.877 回答
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>
于 2015-12-04T17:05:56.793 回答