2015-12-03 26 views
0

更新SF后,我有一个问题,阻止完全使用SF,我会尝试将问题放在没有代码的单词中。服务面料:包装代码错误:缺少必需的参考

服务结构应用程序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\CodeAppName.Core.dll

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

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

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预览版后出现问题。

回答

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> 
+0

谢谢。在真正的解决方案中,引用的dll太多了。什么时候可以修复?是否等待下一个重大更新? – AsValeO

+0

它的工作原理! *给予好评* – AsValeO

1

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

+0

请问您能解释我怎样才能用msbuild来解决这个问题吗? – AsValeO

+1

您可以使用'msbuild.exe/t:package myapp.sfproj'来打包。 –

+0

谢谢,它有帮助。我使用MSBuild进行打包,然后手动执行'Deploy-FabricApplication.ps1'。有没有办法将调试器附加到SF应用程序,就像我按VS中的开始按钮? – AsValeO

相关问题