对于.NET解决方案,有没有办法获取解决方案中每个项目的所有.dll文件?例如,如果我制作一个空的.NET解决方案(这是Visual Studio 2010 btw),并添加3个名为“a”,“b”和“c”的项目,并构建每个项目,为我提供dll的a.dll,b .dll和c.dll,在C#或Powershell中是否有任何代码示例可以给我一些这些.dll的集合(但不是任何其他.dll,比如使用第三方库)?
由于
答案 0 :(得分:2)
为此方案实施100%强大的解决方案很困难。由于人们利用MSBuild的灵活性,项目文件虽然通常很简单,但可能变得非常复杂。例如,对于同一项目,可以根据特定的构建设置构建具有非常不同名称的程序集。这使得在不了解整体构建上下文的情况下很难选择程序集名称。
然而,对于最直接的情况,以下powershell脚本将起到作用。确保它与指定的解决方案文件在同一目录中运行。
gc SomeProject.sln |
? { $_ -match "^Project" } |
% { ($_.Split(","))[1].Trim().Trim('"') } |
? { $_ -match ".*proj" } |
% { $x = [xml](gc $_); $x.Project.PropertyGroup[0].AssemblyName } |
% { $_ + ".dll" }
答案 1 :(得分:0)
一种简单的方法(无需编写VS插件)将解析项目文件。项目文件(XML格式)将有一个名为ProjectReference的元素(常规引用位于另一个元素中,称为Reference
):
<Project ...>
<ItemGroup>
<ProjectReference Include="..\path\YourProject.csproj">
...
</ProjectReference>
</ItemGroup>
</Project>
您可以使用工具集中的任何XML API解析此问题,并使用项目名称(Include
属性)获取dll的名称。当然,只有当您的项目与dll具有相同的名称时,这才有效。如果没有,您可以打开csproj
文件并找到元素<AssemblyName>
答案 2 :(得分:0)