【问题标题】:C# - Use of wildcards inside csproj file and new files additionC# - 在 csproj 文件中使用通配符并添加新文件
【发布时间】:2017-03-23 15:31:47
【问题描述】:

.csproj 文件中,Visual Studio 和 Xamarin Studio 默认保留对项目中使用的每个文件的引用。

<ItemGroup>
    <Compile Include="Utils\Foo1Utils.cs" />
    <Compile Include="Utils\Foo2Utils.cs" />
    <Compile Include="Services\FooService.cs" />
    ...
</ItemGroup>

为了避免每次添加文件时我们的解决方案中的 csproj 文件发生冲突,我们开始使用通配符

<ItemGroup>
    <Compile Include="Utils\*.cs" />
    <Compile Include="Services\*.cs" />
    ...
</ItemGroup>

问题在于,显然在 Visual Studio 和 Xamarin Studio 上都无法向 IDE “解释”我们正在使用通配符,并且当我们向项目添加新文件时,它们会添加对文件的新引用而忽略文件夹上的通配符*.cs。这仍然是一个很好的解决方案,因为我们不需要在每次添加文件时提交我们的 .csproj,但现在我们必须每次都重置它们......谁知道是否有解决方案?

编辑:使用 Rider (JetBrains) 没有这个问题,如果在 csproj 中有一个通配符并且我添加了一个新文件,一切正常。

【问题讨论】:

  • Utils 或 Services 文件夹中是否有添加了新文件的子文件夹?
  • @Poosh 有时我有子文件夹,但根据我的经验,这并没有什么区别。我很少改变我的文件夹结构,所以通常我只写“Utils\*.cls”和“Utils\Subutils\*.cs”,只是为了有一点控制权。
  • 在 Visual Studio 中,如果您尝试将新类添加到使用通配符在 csproj 文件中引用的文件夹之一,然后退出 Visual Studio,是否会提示您保存对解决方案的更改/项目?
  • 我通常使用 Xamarin Studio,而我的一位同事使用 Visual Studio,我们俩都有同样的问题:如果我们在已经被通配符“覆盖”的文件夹中添加文件,ide 添加文件在 csproj 中,我们必须丢弃修改。

标签: c# visual-studio csproj


【解决方案1】:

如果您对项目使用新格式 (.net core 2),它将使用通配符包含,而无需为项目文件夹中的文件指定它。您可以手动设置目标框架,以便仍然编译到您想要的任何目标。

【讨论】:

  • 谢谢,我转换了我的一些旧项目,是的,确实使用新格式不需要包含任何内容。顺便说一句,我在转换几个项目时遇到了一些问题,考虑到 Rider 通配符工作得很好,我想我的问题的解决方案很简单:它是 Visual Studio 的一个错误,在 Mac 和 Win 上都是。
  • csproj 格式实施起来有些棘手,因为它已经很老了。为了避免旧的怪异,最好继续前进。其中一些可能会在几年内通过拉取请求修复。
猜你喜欢
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-21
相关资源
最近更新 更多