1

有没有一种快速的方法可以将所有解决方案项目引用标记为 Copy local false?有什么工具可以做到这一点吗?手动标记大约 200 个项目非常麻烦

4

3 回答 3

2

我有一个棘手的方法,但它总是手动

假设你有两个项目

拉出所有引用,按shift并选择您的第一个引用,然后按住shift并选择第一个项目的最后一个引用

释放shift按钮,按ctrl按钮并选择第二个项目的第一个引用,然后同时按ctrlshift按钮并选择第二个项目的最后一个引用

它应该是这样的:

截屏

最后,您可以将复制本地属性设置为 false 到所有选定的引用

IDE:VS2013 法语

于 2014-12-01T20:19:26.347 回答
2

是的,有一种非常简单快捷的方法,从 msbuild v 15 开始。您可以在包含源代码的根文件夹中复制一个名为Directory.Build.props的文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemDefinitionGroup>
  <Reference>
    <Private>False</Private>
  </Reference>
</ItemDefinitionGroup>
</Project>

无事可做!更多信息见https://stackoverflow.com/a/50755479/1196586

于 2018-06-14T13:54:36.170 回答
1

您可以使用 xsl 转换项目文件以添加 False (这就是 copy local false 所做的)

这是一个示例 xslt 文件

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:cs="http://schemas.microsoft.com/developer/msbuild/2003"
exclude-result-prefixes="cs"> 

    <xsl:output method="xml" indent="yes" />
    <xsl:strip-space elements="*"/>

    <xsl:template match="*"> 
    <xsl:copy> 
        <xsl:apply-templates select="@*|*|text()|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="cs:Project/cs:ItemGroup/cs:Reference"> 
        <xsl:copy>
      <xsl:apply-templates select="@* | node()" />
          <xsl:if test="not(./cs:Private)">
            <Private>False</Private>
          </xsl:if>

    </xsl:copy>
    </xsl:template> 

    <xsl:template match="@*| text() | node()"> 
        <xsl:copy>
             <xsl:apply-templates select="@* | node()" />
        </xsl:copy>
    </xsl:template>     
</xsl:stylesheet> 
于 2014-12-01T21:46:28.673 回答