从使用Directory.Build.props的所有项目中排除文件夹?



我有一个项目的解决方案,每个项目都包含文件夹"预览"我希望这个文件夹永远被排除在我的项目之外。

当我"从项目中排除"时通过Visual Studio,将以下内容添加到.csproj文件中:

<ItemGroup>
<Compile Remove="Previews**" />
<EmbeddedResource Remove="Previews**" />
<None Remove="Previews**" />
</ItemGroup>

如果我从.csproj文件中删除该文件,并将其添加到Directory.Build.props文件中,则不再从vs中排除该文件

我还尝试使用"$(ProjectDir)Previews**"和没有属性的完整路径,两者都不起作用。

如何做到这一点?这似乎应该是可能的,因为VS可以拾取声明的引用,以及解决方案.props文件中的许多其他项目属性。

代替,你应该使用Directory.Build.targets

你的操作是覆盖MSBuild上的一些项目,这是.targets文件的功能。它在csproj文件的底部导入,以便它可以覆盖这些项。(msbuild从上到下读取,并将最后一个XML节点作为最终值)。

.props文件是在csproj文件的顶部导入的,它被用来定义一些新的全局属性。它是在顶部导入的,它不能用作覆盖值操作,并且它总是被csproj文件主体下的属性覆盖。

除了>,你可以从这个官方文件得到两个文件的使用方法。 >如果您的item remove正在覆盖操作,您应该将文件更改为Directory.Build.targets

注意:这两个文件在构建期间嵌入到主csproj文件中。所有msbuild属性,项目,....可在两个文件下使用。

使用@Mr。Qian的回答是,当Directory.Build.props不能工作时,我可以使用Directory.Build.targets

对于那些希望在Visual Studio中"隐藏"特定文件/globs的人来说,这里是我的Directory.Build.targets,它排除了所有项目中的npmpackage.json,package-lock.json和NuGetpackages.lock.json文件:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Content Remove="*lock.json" />
<Content Remove="package.json" />
<None Remove="*lock.json" />
<None Remove="package.json" />
</ItemGroup>
</Project>

最新更新