Service Fabric: packaging code error: missing required references
Service Fabric: packaging code error: missing required references
更新 SF 后,我遇到了一个完全无法使用 SF 的问题,我将尝试在没有代码的情况下用文字表达问题。
Service Fabric 应用程序 AppName.SF
由 AppName.SF.StatefulActor
和 AppName.SF.StatefulService
组成。两者都引用了名为 AppName.Core
.
的 class 库
案例 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后出现问题
您似乎发现了错误 - 我们正在调查。在此期间,如果您使用 msbuild 进行构建,它应该可以工作。
要解决此问题,请将以下内容添加到您的应用程序项目 (.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>
更新 SF 后,我遇到了一个完全无法使用 SF 的问题,我将尝试在没有代码的情况下用文字表达问题。
Service Fabric 应用程序 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后出现问题
您似乎发现了错误 - 我们正在调查。在此期间,如果您使用 msbuild 进行构建,它应该可以工作。
要解决此问题,请将以下内容添加到您的应用程序项目 (.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>