비 관리 라이브러리 libtidy.dll
을 사용하는 응용 프로그램이 있습니다. 우리 코드에서는 래퍼 TidyManaged
을 사용하고 있습니다.NuGet 패키지는 관리되지 않는 dll을 bin 대신 루트 디렉토리에 복사합니다.
우리는 다음과 같이 나는 NuGet 패키지를 생성하고이 작업을 수행하려면 bin
디렉토리
에 배치하는 우리 팀의 서비스 개인 패키지 피드 libtidy
에 끌어하려는 :
- 이 만들기 디렉토리
libtidy-managed
- 함께,이 디렉토리에서
- 새 디렉토리에 실행
nuget spec
을 모두libtidy.dll
및TidyManaged.dll
를 넣어 다음 파일
Package.nuspec :
<?xml version="1.0"?>
<package >
<metadata>
<id>libtidy-tidymanaged</id>
<version>1.0.0</version>
<authors>Name</authors>
<owners>Name</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Libtidy TidyManaged</description>
<releaseNotes>Libtidy TidyManaged</releaseNotes>
<copyright>Copyright 2016</copyright>
<tags>Libtidy TidyManaged</tags>
</metadata>
<files>
<file src="libtidy.dll" target="content" />
<file src="TidyManaged.dll" target="lib" />
<file src="Install.ps1" target="tools" />
</files>
</package>
Install.ps1
param($installPath, $toolsPath, $package, $project)
$file = $project.ProjectItems.Item("libtidy.dll");
If ($file -eq $null)
{
$project.ProjectItems.AddFromFile("libtidy.dll");
$file = $project.ProjectItems.Item("libtidy.dll");
}
$file.Properties.Item("CopyToOutputDirectory").Value = [int]1;
그때
nuget pack
을 사용하여 패키지를 만들고 로컬 nuget에 새로운 패키지를 참조
먹이.
내가 솔루션
대신 빈 디렉토리libtidy.dll
을 구축
- 의, 루트 디렉토리에 위치 나는 (루트 디렉토리에)
libtidy
의 속성을 볼 때 빌드 후Copy to output directory
은Copy always
- 으로 설정됩니다.
build
탭 아래의 프로젝트 속성을 볼 때Output path
은bin\
으로 설정됩니다. 내가 잘못하고있는 것을 누구라도 볼 수 있습니까?
참고 :이 질문은이 Stack Overflow question에서 후속이다 - 허용 대답에서 사용자가 모든 일을해야 말한다, 그러나 나는 여전히이 문제를 얻고있다.
지금까지 내가, 당신의 단계에 따라
답장을 보내 주셔서 감사합니다. 스크립트가 실행 된 후'libtidy'가 예상대로 bin 디렉토리에 있음을 알았습니다. powershell 스크립트를 사용하여 루트 디렉토리에서'libtidy'를 제거하는 방법을 조언 해 주시겠습니까? (필자는 결코 powershell을 사용하지 못했습니다) –
루트 디렉토리에서 libtidy를 제거 할 수 없었습니다. 그것은 관리되지 않는 dll이므로 루트 디렉토리에 추가하여 참조해야합니다. 그리고 프로젝트를 다시 빌드 할 때 bin 폴더가 정리됩니다. libtidy가 루트 디렉토리에서 제거 된 경우 프로젝트를 다시 빌드 할 때 libtidy는 bin 폴더로 복사하지 않습니다. –