.csproj 파일의 모든 Nuget 종속성을 DLL로 지정된 디렉토리에 가져 오는 방법이 있습니까?.csproj 파일의 모든 Nuget 종속성을 DLL로 지정된 디렉토리에 가져옵니다.
0
A
답변
2
.csproj 파일의 모든 Nuget 종속성을 DLL로 지정된 디렉토리에 가져 오는 방법이 있습니까?
.csproj
파일을 기반으로 지정된 디렉토리에 dll 파일을 가져 오시겠습니까? 그렇다면 NuGet은이를 지원하지 않지만 Power Shell과 같은 다른 기술을 사용하여이 요구 사항을 충족시킬 수 있습니다.
GetDllFiles.ps1
를 만들려면 :
$projectFiles = get-childitem . *.csproj -Recurse
foreach($projectFile in $projectFiles)
{
$projectXml = [xml] (get-content $projectFile.FullName)
$projectDir = $projectFile.DirectoryName
Write-Host "# $($projectFile.FullName) #"
foreach($itemGroup in $projectXml.Project.ItemGroup)
{
if($itemGroup.Reference.Count -eq 0)
{
continue
}
foreach($reference in $itemGroup.Reference)
{
if($reference.Include -eq $null)
{
continue
}
if($reference.HintPath -eq $null)
{
Write-Host ("{0}" -f $reference.Include)
}
else
{
$fullpath = $reference.HintPath
if(-not [System.IO.Path]::IsPathRooted($fullpath))
{
$fullPath = (join-path $projectDir $fullpath)
$fullPath = [System.IO.Path]::GetFullPath("$fullPath")
}
Write-Host $fullPath
Copy-Item $fullPath D:\Test
}
}
}
Write-Host ''
Start-Sleep –s 10
}
이 파워 쉘 스크립트는 현재 디렉토리 아래의 모든 .csproj
파일을 잡고, 각 참조를 검사합니다. GAC에서 참조 된 어셈블리의 경우 이름 만 출력됩니다. GAC 외부의 어셈블리의 경우 어셈블리의 전체 경로를 출력 한 다음 지정된 디렉터리로 복사 할 수 있습니다. 코멘트에 대한
업데이트 :
하지만 난 조금 다른 것은 싶어 - 그 내 응용 프로그램의 모든 DLL을 가지고 .csproj 모든 NuGet 패키지를 가져 오는 순서대로 지정된 디렉토리로를 "압축"하기를 에 달려있다.
대신 그냥 dll 파일의 지정된 디렉토리에 전체 nuget 패키지를 가져 싶은 경우에, 당신이 그것을 달성하기 위해 간단한 nuget 명령 줄을 사용할 수 있습니다
는nuget restore "xx.csproj" -OutputDirectory "SpecifiedDirectoryPath"
이 명령 줄 전체를 가져옵니다 nuget 패키지를 만들고 지정된 디렉토리에 압축을 푸십시오.
응답 해 주셔서 감사합니다.하지만 조금 다른 점이 있습니다. - .csproj에서 모든 NuGet 패키지를 가져 와서 지정된 디렉토리에 압축을 풀어 내 응용 프로그램이 의존하는 모든 DLL을 갖도록하십시오. –
@AndrewOrlov .csproj에서 모든 NuGet 패키지를 가져 와서 dll 파일 만 설치 한 지정된 디렉토리에 압축을 풀려면 nuget 명령 줄을 사용하여 복원하십시오. 자세한 내용은 내 업데이트를 참조하십시오. . 희망이 도움이됩니다. –