如何在解决方案中设置所有项目以复制本地false

时间:2014-12-01 19:48:51

标签: c# .net copy-local

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

3 个答案:

答案 0 :(得分:2)

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

假设您有两个项目

拉出所有参考文献,按 shift 并选择第一个参考,然后按住 shift 并选择第一个项目的最后一个参考

释放 shift 按钮,按 ctrl 按钮,然后选择第一个项目的第一个参考,然后按 ctrl 同时移动按钮并选择第二个项目的最后一个参考

应该是这样的:

screenshot

最后,您可以将Copy local property设置为false,以显示所有选定的引用

IDE:VS2013法语

答案 1 :(得分:1)

您可以使用xsl转换项目文件以添加False(这是本地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> 

答案 2 :(得分:1)

是的,从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