tom*_*med 11 c# dependency-injection azure azure-service-fabric
我有一个包含以下内容的Visual Studios解决方案:
无状态服务项目使用基于配置的依赖注入,这意味着依赖项与项目本身松散耦合,而不是实际的VS"项目/编译依赖项".
我想继续使用Visual Studios,但是当我部署这个项目时,它不知道程序集依赖性(因为它们只在DI配置中定义),因此它不会打包必要的文件并抛出异常尝试执行依赖注入.
ApplicationManifest.xml文件中是否有任何方法或Visual Studios提供的其他许多XML文件之一,我可以指定其他文件(即我的依赖程序集)作为部署的一部分发布到Service Fabric?
理想情况下,我想将此文件自动生成为自动构建脚本的一部分.
为了将此行为封装到Service项目本身,您可以编辑服务的项目文件以包含MSBuild逻辑,该逻辑将<Content>项动态地包含到项目中,其中CopyToOutputDirectory设置为Always或PreserveNewest.这些项目将根据您的DI配置在构建时动态包含.由于服务项目"声明"它具有这些内容项,因此它们将被复制到服务的包文件夹中.
另一种选择是在Package步骤中在Application项目中添加逻辑.您可以像这样实现目标:
<Target Name="AfterPackage" AfterTargets="Package">
<!-- Copy dependency files to service package location -->
</Target>
Run Code Online (Sandbox Code Playgroud)
您的逻辑将对DI配置执行相同类型的读取,但不是添加<Content>项,而是将文件复制到应用程序包中的适当位置,其路径由$(PackageLocation)定义.
使用上面 Matt 的建议,我让它在我的 sfproj 中工作,以复制我的应用程序所需的一些本机 dll。以防万一有人有相同的用例:
<Target Name="AfterPackage" AfterTargets="Package">
<Copy SourceFiles="ApplicationPackageRoot\mynative.dll" DestinationFolder="$(PackageLocation)\MyServicePkg\Code"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4588 次 |
最近记录: |