如何防止从 _bin_deployableAssemblies 文件夹复制隐藏的 .svn 文件夹?

2024-04-06

我使用 _bin_deployableAssemblies 文件夹在每次构建后将 ASP.NET MVC 程序集复制到 bin 文件夹。不幸的是,MSBuild 任务还会复制隐藏的 .svn 文件夹。

第一次尝试修复

我想在项目级别解决这个问题,所以我添加了一个RemoveDir任务给AfterBuild.csproj 文件中的目标,适用于正常构建。

<RemoveDir Directories="@(OutDir).svn" />

但当我这样做时它似乎不起作用publish网站。发布后,.svn 文件夹将复制到发布向导的目标文件夹。奇怪的是,它最终也出现在项目的 /bin 文件夹中,尽管RemoveDir task!

在目标文件中C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets动态创建项目组以包含文件夹 _bin_deployableAssemblies 中的所有文件:

<CreateItem Include="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\**\*.*" 
            Condition="Exists('$(MSBuildProjectDirectory)\_bin_deployableAssemblies')">
    <Output ItemName="_binDeployableAssemblies" TaskParameter="Include"/>
</CreateItem>

Using a Message任务在AfterBuildtarget 我可以看到该项目组包含 .svn 文件夹中的所有文件。

第二次尝试修复

所以我尝试了以下技巧来调整 .AfterBuild 目标中的项目组:

<ItemGroup>
    <_binDeployableAssemblies Remove="$(MSBuildProjectDirectory)\_bin_deployableAssemblies\.svn\**\*.*" />
</ItemGroup>

如果我使用之后打印文件列表Message我可以看到它不再包含 .svn 文件夹中的文件。But,在构建或发布时,.svn 文件仍会复制到输出文件夹!

可能的实际修复

Publish 命令似乎首先执行常规构建,此时我们可以使用 AfterBuild 目标删除文件。但随后它将把文件复制到临时位置(在 /obj 文件夹中)以便发布它们。在此阶段,似乎它将所有内容从 _bin_deployableAssemblies 复制到 binagain然后才将 bin (和其他项目文件)复制到临时位置。这似乎发生了after构建后。

因此,诀窍可能是在将项目文件复制到临时文件夹之前在某个地方挂钩该进程。或者之后,但不仅需要清理临时文件夹,还需要第二次清理原始 bin 文件夹。这可以通过连接到许多 DependsOn 目标之一来实现。

如果没有合适的目标来执行此操作,那么从某些中间项目组中删除文件可能是一种解决方案,这样它们就不会真正被复制或发布。

由于缺乏对发布过程的了解,我无法实现这些可能的修复。

主要问题

如何防止文件被复制或在复制后删除文件?如何对常规构建和发布命令执行此操作?


将其添加到您的 .csproj 文件(或{projectName}.wpp.targets file):

  <PropertyGroup>
    <OnAfterCopyAllFilesToSingleFolderForPackage>
      __RemoveSvnFromPackageTemp
    </OnAfterCopyAllFilesToSingleFolderForPackage>
  </PropertyGroup>

  <Target Name="__RemoveSvnFromBin" AfterTargets="_CopyBinDeployableAssemblies">
    <Message Text="Removing .SVN from BIN" Importance="normal"/>
    <RemoveDir Directories="$(OutDir).svn" />
  </Target>

  <Target Name="__RemoveSvnFromPackageTemp">
    <Message Text="Removing .SVN from PackageTempDir" Importance="normal"/>
    <RemoveDir Directories="$(_PackageTempDir)\bin\.svn" />
  </Target>

这适用于构建、打包和发布!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何防止从 _bin_deployableAssemblies 文件夹复制隐藏的 .svn 文件夹? 的相关文章

  • asp.net c# 将数据集中的数据转换为电子邮件正文?

    从数据集到电子邮件正文的最佳方式是什么 我有一个 net 控制台应用程序 用于根据存储过程的结果发送电子邮件通知 并且想知道如何最好地从 SQL 数据转到电子邮件正文 带有颜色和字体的 html 正文是最好的 但纯文本也可以 thanks
  • AJAX控制工具包加载所有脚本

    我有一个奇怪的问题 我似乎无法解决 我正在使用 AJAX 控制工具包日历延长器在我的一些页面上 尽管我通过网络找到了信息 但我似乎无法让它与常规程序一起工作ScriptManager控制 它only与一个ToolkitScriptManag
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • asp.net net.mail - 在调试模式下将所有电子邮件路由到不同的电子邮件地址

    无论如何 有没有办法让所有电子邮件发送到不同的地址System Web HttpContext Current IsDebuggingEnabled是真的 或者我是否需要一个新的类来用于到处发送电子邮件 我会设置一个 SMTP 服务器 并让
  • 在 ASP.NET Core 中,有没有办法从 Program.cs 设置中间件?

    我正在为 ASP NET Core 网站构建一个支持库 我有一些需要启用的中间件 并且由于它们的作用 需要在任何其他中间件之前添加它们 我可以在 IWebHostBuilder 上创建一个扩展方法来添加服务 同样用于配置日志记录 但我没有看
  • 无法提交到 svn - 访问被拒绝

    我正在使用 SVN 开发一个小项目 我查看了该项目 svn co http mylocalserver projectx 我进行了更改 更新并添加了文件 svn add file1 php file2 php 但是 每次我想使用此命令提交更
  • 如何在联系我们页面中使用用户电子邮件发送电子邮件?

    我正在创建一个联系我们页面 并且我想从该页面接收邮件 因为它的邮件来自用户邮件 我写了这段代码 var client new SmtpClient smtp gmail com 587 Credentials new NetworkCred
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • App.Config 和 Web.Config 之间的区别?

    当在 wpf 中构建桌面应用程序时 您可以阅读问题文档并在人们的答案引用 web config 时安全地替换 app config 吗 如果是这样 您是否需要注意任何明显的陷阱 tnx 阅读文档 http msdn microsoft co
  • 删除自动导入的自定义项目模板

    我删除了放置在导出模板文件夹中的导出 zip 文件 当然它仍然显示在 Visual Studio 的 添加新项目 对话框中 我预料到了这一点 但我很难找到模板文件的其他存储位置 如何删除自定义模板 Edit 我搜索了以下文件夹 以及许多其他
  • ASP.NET Web Api 2 中的异常处理

    Problem 我需要处理 Web api 2 异常并返回一个具有正确状态代码的丰富对象 401 表示未经授权 404 表示 ContentNotFound 等 以及一些额外信息作为内容 此外 我需要内容看起来像序列化的Exception对
  • 如何在 gridview 控件的项目模板内显示列表视图。

    如何在 gridview 控件的项目模板内显示列表视图 gridview 将列出 table bill 中的所有 bill id 列表视图将绑定 table bill details 中具有特定 item bill id 的所有 item
  • asp.net 将值从 JS/jquery 传递到 C# 背后的代码

    我已经尝试了 所有 可能的方法 将 screen width vlaue 从 aspx 页面上的 JS 脚本发送到后面代码中的 c 虽然我可以看到 screen width 被正确分配 但它永远不会分配给我的隐藏字段价值
  • 关闭文件后未保存展开/折叠状态

    在 Visual Studio 中 您可以在不使用区域的情况下展开和折叠代码 例如在代码隐藏页面中您可以折叠方法等 而在 ASPX 页面中您可以折叠标签 标签等 当您的页面很长并且您希望将开发重点放在特定部分时 它非常有用 它的一个很酷的地
  • ASP.NET Core URL 重写

    我正在尝试将我的网站从 www 重定向到非 www 规则以及 http 到 https https example com https example com 在中间件中 我曾经在 web config 中进行这些重定向更改 例如
  • 部署项目 dll 导致“两者都存在类型 x”错误

    我有一个 Web 应用程序项目 一个业务逻辑项目和一个用于 Web 应用程序的 Web 部署项目 当我构建解决方案时 部署 Release bin 包含每个项目的 1 个 dll 因此我为 MyWeb dll MyWebBusiness d
  • 对 URL 进行编码 C#

    所以我有一个看起来像这样的 URL http www test com folder1 id 3 但基本上 当他们单击按钮时 我想在 URL 栏中显示与该 id 关联的值的名称 例如 id 3 是名为 Rollex 的手表 所以我想要读取
  • Subversion 和 Visual Studio 项目的最佳实践

    我最近开始在 Visual Studio 中处理各种 C 项目 作为大型系统计划的一部分 该系统将用于替换我们当前的系统 该系统是由用 C 和 Perl 编写的各种程序和脚本拼凑而成的 我现在正在进行的项目已经达到了颠覆的临界点 我想知道什
  • 将字符串转换为正确的 URI 格式?

    有没有简单的方法可以将电子邮件地址字符串转换为正确的 URI 格式 Input http mywebsite com validate email 3DE4ED727750215D957F8A1E4B117C38E7250C33 email
  • 无法解析远程名称 - webclient

    我面临这个错误 The remote name could not be resolved russgates85 001 site1 smarterasp net 当我请求使用 Web 客户端读取 html 内容时 出现错误 下面是我的代

随机推荐