更新SF之后我遇到了一个完全阻止使用SF的问题,我会试着用没有代码的单词来解决问题。
服务架构应用AppName.SF
由AppName.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\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后出现问题。
答案 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>