gpt4 book ai didi

asp.net - 使用发布网站时,是否可以包含使用Unity引用的程序集?

转载 作者:行者123 更新时间:2023-12-02 04:06:38 25 4
gpt4 key购买 nike

我正在使用存储库模式和Unity来管理对我的具体存储库对象的依赖性。本身这不是问题,但是在VS和TFS生成过程中同时使用发布网站时,我遇到了问题。

我认为问题是由于以下事实引起的:尽管在我的应用程序中引用了包含具体存储库对象的项目,但从未直接使用该项目所包含的类。这是因为我正在使用Unity在web.config中保存的Unity配置在运行时创建具体对象的实例。

在构建时将编译存储库项目并在输出中包含该存储库项目,但是在TFS的任一VS中使用发布网站时,都会丢失存储库程序集。因此,当将Web应用程序部署到Web服务器时,由于出现以下错误而无法使用它:

给定的程序集名称或代码库无效。 (来自HRESULT的异常:0x80131047)

这是因为Unity找不到您期望的缺少的程序集。

所以我的具体问题是;有没有一种方法可以确保在VS和TFS中发布网站时直接将存储库程序集复制到输出中,而无需直接使用项目中的具体类之一?

最佳答案

因此,通过深入研究,我找到了解决问题的方法。这个解决方案仅在使用TFS进行构建时解决了问题,但是老实说,与持续集成相结合,我对从VS发布并不感到困扰。

我的灵感来自Mike Hadlow给出的答案

What's the best way to get TFS to output each project to its own directory?

基本上,解决方案是修改Web项目的生成脚本,以便将缺少的程序集复制到发布网站输出文件夹中。

这是我所做的:

  • 我在解决方案资源管理器中右键单击我的Web项目,然后单击“卸载项目”。
  • 然后我右键单击已卸载的项目,然后单击“编辑 [项目名称]
  • 向下滚动到文件底部,我发现以下注释掉了构建目标:


  • 我修改了此操作,添加了命令以复制缺少的程序集:



    <复制SourceFiles =“$(OutDir) [缺少程序集名称] ” DestinationFolder =“$(OutDir)_PublishedWebsites \ $(MSBuildProjectName)\ bin” SkipUnchangedFiles =“true” />

  • 现在,在TFS中构建解决方案时,缺少的程序集将包含在已发布的网站输出的bin文件夹中。

  • 此解决方案可用于将任何其他丢失的内容复制到已发布的网站输出中。由于每个项目要复制的文件可能会有所不同,因此以这种方式进行操作可能是最好的选择。但是,我正在考虑创建Microsoft.WebApplication.targets的自定义版本,该版本将复制缩小的CSS和脚本文件。

    关于asp.net - 使用发布网站时,是否可以包含使用Unity引用的程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282453/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com