【问题标题】:Is there a way to keep files in App_Data from overwriting newer files when publishing?有没有办法让 App_Data 中的文件在发布时不会覆盖较新的文件?
【发布时间】:2008-10-17 14:53:12
【问题描述】:

我将 App_Data 中的 XML 文件与 Intranet 应用程序主页上的 Repeater 结合使用,允许我在用户登录时向用户显示有关应用程序状态、维护等的消息。为了测试功能,它会很好将文件放在正在开发的 App_Data 文件夹中,但是如果我这样做,它会在我发布应用程序时将其复制到生产服务器上的文件中。无论如何我可以防止这种情况发生,而不是去一个 Web 部署项目(这会解决我的问题)吗?

【问题讨论】:

    标签: asp.net deployment application-data


    【解决方案1】:

    在 Visual Studio 2005 中,我看到一个标记为“包括 App_Data 文件夹中的文件”的复选框,默认为选中状态。您是否尝试过在未选中该复选框的情况下发布?

    编辑: 鉴于您的项目无法使用该复选框,我会考虑将 VS2005 Web Deployment add-on 用于 Visual Studio。我自己没有使用过它,但在调试和发布模式之间自定义发布的功能看起来很有希望。

    【讨论】:

    • 网站上似乎没有该复选框,也许它仅适用于 Web 应用程序。无论如何对我都不起作用,因为我还有其他需要发布的 XML 文件。
    【解决方案2】:

    为避免该问题,我还将部署到本地“暂存”位置,本质上是我桌面上的一个文件夹。一旦文件由 Visual Studio 编译并部署到那里,我将删除我不感兴趣的文件(在您的情况下为 App_Data),然后使用 XCopy 或使用 Windows 资源管理器将文件复制到 Web 服务器。

    除了类似的东西,我知道没有办法让 Visual Studio 本身在部署时省略那些文件/文件夹。

    【讨论】:

    • 我现在测试开发中的功能的解决方法是不将文件包含在项目中,在打开文件的代码中设置断点,然后手动更改路径以使其看起来在我在 C:\Temp 中创建的文件中。我希望有办法排除某些文件。
    【解决方案3】:

    另一种方法是拥有一个“调试”文件和一个“生产”文件..

    Stream xml;
    #if DEBUG
    xml = File.Open("debug.xml");
    #else
    xml = File.Open("release.xml");
    #endif
    

    在DEBUG模式下编译会使用debug文件,在release模式下编译会使用release文件。

    【讨论】:

      猜你喜欢
      • 2021-02-02
      • 2019-09-15
      • 2011-04-28
      • 2013-09-11
      • 2014-02-01
      • 1970-01-01
      • 2017-05-16
      • 2013-04-05
      • 2012-02-06
      相关资源
      最近更新 更多