【问题标题】:Include Content in csproj with a wildcard使用通配符在 csproj 中包含内容
【发布时间】:2017-08-07 15:48:42
【问题描述】:

首先是我要解决的问题。我在一个大团队工作,我们的 web.csproj 文件经常出现合并冲突。我尝试实施的解决方案是使用通配符包含内容文件。

我正在尝试将所有文​​件包含在我的 web.csproj 文件中的目录中,就像这样。

<Content Include="Areas\Public\Client\**\*.js" />
<Content Include="Areas\Public\Client\**\*.html" />
<Content Include="Areas\Public\Client\**\*css" />

乍一看,这很有效。我可以在 Visual Studio 中看到与这些模式匹配的所有文件。问题是,如果有人从 Visual Studio 中删除文件,IDE 会枚举 csproj 文件中的所有文件并删除我上面的​​通配符行。

你们有没有解决过这个问题或有什么建议?

谢谢!

【问题讨论】:

  • 这看起来像是处理删除文件背后的逻辑错误。我会考虑filing a report
  • 太棒了。如果您想修复它,最好鼓励人们对该错误进行投票。如果投票超过某个阈值,它将被查看并修复。
  • @bluetoft,Martin 的观点应该是对的。我之前在 Visual Studio 2015 和 2017 中遇到过类似的问题。所以我对该报告投了票。另外,我个人对这个问题的理解是,我们使用通配符将文件包含到Visual Studio中,然后我们通过VS删除一个文件,VS可能不知道删除了哪个文件,所以VS会枚举所有文件。似乎不支持反向通道。
  • 我的解决方法是从 Windows 资源管理器而不是 Visual Studio 中删除文件。这种方法会有点麻烦,但不会破坏通配符。

标签: c# visual-studio-2015 msbuild


【解决方案1】:

这在 VS 2015 中是不可能的,除非失去添加/重命名/移动/等功能。项目保留通配符。

项目文件中的通配处理仅由 VS 2017 中的 new CPS-based project system 实现,它(尚未)用于“经典”.NET / ASP.NET 项目。

在构建期间可以使用通配模式(使用自定义目标)添加内容项,但这些方法不会显示在解决方案资源管理器中(这对于自动生成的文件来说是可以的)

【讨论】:

  • 谢谢,但我使用的是 VS 2015。我不知道这是否有帮助。
  • 是的,我告诉你这是不可能的。我将进行编辑以使其清楚。
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多