Service Fabric包含其他文件

我有一个包含以下内容的Visual Studios解决方案:

  • Service Fabric项目
  • 无国籍服务项目

无状态服务项目使用基于配置的dependency injection,这意味着依赖项与项目本身松散耦合,而不是实际的VS“项目/编译依赖项”。

我想继续使用Visual Studios,但是当我部署这个项目时,它不知道程序集依赖性(因为这些仅在DI配置中定义),因此它不会打包必要的文件并抛出exception尝试执行dependency injection。

ApplicationManifest.xml文件中是否有任何方法或Visual Studios提供的其他许多XML文件之一,我可以指定作为部署的一部分发布到Service Fabric的其他文件(即我的依赖程序集)?

理想情况下,我想将此文件自动生成为自动构建脚本的一部分。

为了将此行为封装到Service项目本身,您可以编辑服务的项目文件以包含MSBuild逻辑,该逻辑将项目动态地包含到项目中,其中CopyToOutputDirectory设置为Always或PreserveNewest。 这些项目将根据您的DI配置在构建时动态包含。 由于服务项目“声明”它具有这些内容项,因此它们将被复制到服务的包文件夹中。

另一种选择是在Package步骤中在Application项目中添加逻辑。 您可以像这样在那里实现目标:

   

您的逻辑将对DI配置执行相同类型的读取,但不是添加项,而是将文件复制到应用程序包中的适当位置,其路径由$(PackageLocation)定义。

使用上面的Matt建议,我在我的sfproj中使用它来复制我的应用程序所需的一些本机dll。 万一有人有同样的用例: