Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VS2015的C#项目中查找引用程序集的用法_C#_Visual Studio 2015 - Fatal编程技术网

在VS2015的C#项目中查找引用程序集的用法

在VS2015的C#项目中查找引用程序集的用法,c#,visual-studio-2015,C#,Visual Studio 2015,我目前正在挖掘一个相当大的项目,并试图将各个部分分离到自己的项目中 一个程序集让我很头疼,因为在单独的项目中引用它会引发一个关于循环依赖性的错误 我现在的问题是如何在项目中找到特定程序集引用的所有用法?最简单的方法是从引用中删除程序集并尝试构建项目。给出的所有错误都将显示它试图使用的位置。如果在源代码目录中运行此PowerShell代码段,它将生成所有项目依赖项的文本描述。然后搜索项目名称以查找传入和传出依赖项 $projectFiles = Get-ChildItem .\*\*.csproj

我目前正在挖掘一个相当大的项目,并试图将各个部分分离到自己的项目中

一个程序集让我很头疼,因为在单独的项目中引用它会引发一个关于循环依赖性的错误


我现在的问题是如何在项目中找到特定程序集引用的所有用法?

最简单的方法是从引用中删除程序集并尝试构建项目。给出的所有错误都将显示它试图使用的位置。

如果在源代码目录中运行此PowerShell代码段,它将生成所有项目依赖项的文本描述。然后搜索项目名称以查找传入和传出依赖项

$projectFiles = Get-ChildItem .\*\*.csproj
$ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

$projectFiles | ForEach-Object {
    $projectFile = $_ | Select-Object -ExpandProperty FullName
    $projectName = $_ | Select-Object -ExpandProperty BaseName
    $projectXml = [xml](Get-Content $projectFile)

    $projectReferences = $projectXml | Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty "#text"

    $projectReferences | ForEach-Object {
        "[" + $projectName + "] -> [" + $_ + "]"
    }
}

额外奖金;您可以将输出复制到中,它将为您构建解决方案依赖关系的图表。

最简单的方法是从引用中删除程序集并尝试构建项目。所有给出的错误都会告诉你它试图被使用的地方。嗯,是的-效果很好,哈哈。有时候我们只是想得太复杂了。这不是我想要的。我需要代码库中使用程序集某些部分的确切行。明白了。我将把它作为一个答案,因为其他人可能会发现,如果他们以后遇到这个问题,它可能会很有用。它与问题无关,因为我们已经知道引用了一个程序集,但非常有用。我认为你最好为此创建一个Wiki(),或者问一个问题,然后自己回答。好的脚本。我只需要添加递归性:“GetChildItem-recurse.\*\*.csproj”我也使用这个方法,但我不希望每次需要快速检查时都这样做。
$projectFiles = Get-ChildItem .\*\*.csproj
$ns = @{ defaultNamespace = "http://schemas.microsoft.com/developer/msbuild/2003" }

$projectFiles | ForEach-Object {
    $projectFile = $_ | Select-Object -ExpandProperty FullName
    $projectName = $_ | Select-Object -ExpandProperty BaseName
    $projectXml = [xml](Get-Content $projectFile)

    $projectReferences = $projectXml | Select-Xml '//defaultNamespace:ProjectReference/defaultNamespace:Name' -Namespace $ns | Select-Object -ExpandProperty Node | Select-Object -ExpandProperty "#text"

    $projectReferences | ForEach-Object {
        "[" + $projectName + "] -> [" + $_ + "]"
    }
}