您可以通過查看FileCodeModel.CodeElements的項目項獲得using語句。
每個ProjectItem有FileCodeModel屬性。 FileCodeModel.CodeElements將爲每個使用語句包含一個CodeImport。請注意,FileCodeModel.CodeElements將包含其他內容,不僅包含CodeImportss,您需要檢查返回的類型或過濾不需要的類型。
下面顯示了一個示例。在這裏,我使用NuGet的包管理器控制檯和PowerShell。
$p = Get-Project
$fileCodeModel = $p.ProjectItems.Item("Class1.cs").FileCodeModel
$fileCodeModel.CodeElements | % { $_.Namespace }
上面的代碼假定在項目的根目錄中有一個Class1.cs文件。對於每個使用語句,它將打印完整的名稱空間。請注意,在上面的代碼中,它試圖爲每個CodeElement打印命名空間,並且一些元素將不具有此屬性,因此您需要限制它,以便僅查看CodeImport類型。以上將用於以下類文件的工作:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
}
}
如果您已經使用命名空間ClassLibrary1的,你將需要做更多的工作,並期待在CodeNamespace成員自公共類的Class1部分之間的語句CodeImports將不會直接從FileCodeModel.CodeElements中獲得,但希望上面的代碼能夠指引您正確的方向。