[c#] NuGet 패키지를 설치할 때 이러한 .dll을 추가 할 수 있습니까?
내 것과 비슷한이 제안 된 질문을 읽음으로 시작했지만 해결 방법이 없었습니다. 왜 MSTest.TestAdapter가 DLL을 NuGet 패키지에 추가합니까?
빠른 문제 설명
나는 NuGet 패키지를 작성하고, 때마다 나는 그것을 설치 NUnit하고 NUnit3TestAdapter .dll의는 I가 설치 프로젝트에 추가됩니다. 이 문제를 해결하는 솔루션을 찾고 싶습니다.
재현 단계
설명하고있는 문제를 재현하는 두 개의 자식 저장소를 푸시했습니다.
ClientLibrary/ MainFramework(내가 NuGet 패키지 생성되는 프로젝트) – https://github.com/harbourc/client-library-repro-nuget-issue
TargetProject(패키지가 설치된 프로젝트) -https : //github.com/harbourc/target-project-repro-nuget-issue
두 저장소를 복제하고 NuGet 패키지를 복원 한 후 다음과 같이 문제를 재현 할 수 있습니다.
-
client-library-repro-nuget-issue / ClientLibrary /에서 ClientLibrary.1.0.0.nupkg를 찾으십시오.
-
target-project-repro-nuget-issue를위한 패키지 관리자 콘솔 열기 및 실행
Install-Package C:\Path\To\client-library-repro-nuget-issue\ClientLibrary\ClientLibrary.1.0.0.nupkg
- 메모
NUnit및NUnit3TestAdapter.dll에 추가 된 ‘들TargetProject– 비록TargetProject이미있다NUnit및NUnit3TestAdapter설치.
더 긴 개요
내부 용이라는라는 자체 NuGet 패키지를 만들었으며라는 ClientLibrary다른 프로젝트에 패키지 를 설치하려고합니다 TargetProject. 다음은 구조에 대한 간단한 분석입니다.
FullSolution.slnMainFramework.csprojClientLibrary.csproj->.nupkg이것으로부터 생성
별도 프로젝트 :
TargetProject.slnTargetProject.csproj-> 설치.nupkg이에
ClientLibrary에 대한 참조가 있으며의 MainFramework많은 메소드를 사용 MainFramework합니다.
설치시 ClientLibrary.1.0.0.nupkg에 TargetProject다음 .dll의가에 추가 얻고있다 TargetProject:
nunit.engine.api.dll
nunit.engine.dll
NUnit3.TestAdapter.dll
NUnit3.TestAdapter.pdb
이 패키지를 삭제하면 패키지가 이미 설치되어 .dll있기 때문에 모든 것이 제대로 작동 TargetProject합니다. 그것들은 필요하지 않습니다. 설치 할 때 삭제 해야하는 것은 성가신 일입니다.
ClientLibraryNuGet 패키지를 추가하는 방법은 다음과 같습니다 TargetProject.
- .dll을 생성하기위한 빌드
ClientLibrary및MainFramework프로젝트 - 디렉토리를
ClientLibrary폴더 로 변경 하고 실행nuget spec
.nuspec 파일이 생성됩니다 :
<?xml version="1.0"?>
<package >
<metadata>
<id>ClientLibrary</id>
<version>1.0</version>
<title>Client Library</title>
<authors>Myself</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Client library for interacting with my application.</description>
<dependencies>
<group targetFramework=".NETFramework4.7.2" />
</dependencies>
</metadata>
</package>
-
Run- 에 의존
nuget pack -IncludeReferencedProjects하기 때문에 (그리고에 의해 사용되는 다른 여러 패키지들 )ClientLibraryMainFrameworkMainFramework -
로 이동하여
TargetProject패키지 관리자 콘솔을 엽니 다. - 운영
Install-Package C:\Path\To\ClientLibrary.1.0.0.nupkg
설치가 성공적으로 실행되면 .dll내가 불평 하는 것들이 추가됩니다.
문제:
MainFramework가 NUnit및 NUnit3TestAdapterNuGet 패키지가 설치되어 있어야합니다. ClientLibrary 하지 않습니다. 따라서에 .dll설치 MainFramework되었지만 설치되지 않았기 때문에가 추가 된 것 같습니다 ClientLibrary. ( ClientLibrary참고 문헌을 기억하십시오 MainFramework.dll.)
있습니다 기타 에 모두 설치 패키지 MainFramework하고 ClientLibrary, 이들은이없는 .dll‘에 추가됩니다의 TargetProject내가 문제를 가정하고하는 것은에서 패키지 선물을함으로써 발생하므로, 설치시를 MainFramework하지만 NOT IN ClientLibrary.
나는 설치하여 내가 할 수있는 “수정”이 문제를 생각 NUnit하고 NUnit3TestAdapter에 ClientLibrary,하지만 ClientLibrary불필요한 것 때문에 실제로 전혀 패키지를 사용하지 않습니다.
어떻게 설치할 수 있습니다 ClientLibrary에 TargetProject포함하지 않고 NUnit와 NUnit3TestAdapter .dll의를 설치하지 않고 NUnit및 NUnit3TestAdapter에 ClientLibrary? 가능하다면 에 이미 설치된 및 패키지 ClientLibrary.1.0.0.nupkg를 사용하고 싶습니다 .NUnitNUnit3TestAdapterTargetProject
대답이 “불가능”하다면 괜찮지 만 설명을 원합니다.이 질문의 전반적인 목표는 NuGet과 종속성의 작동 방식을 더 잘 이해하고 이것이 왜 문제가되었는지 이해하는 것입니다. 처음. 읽어 주셔서 감사합니다.

