릴리스 모드에서 컴파일 된 코드를 사용하여 NuGet 패키지를 만드는 방법이 있습니까? 아니면 디버그 모드에서 컴파일 된 패키지 만 게시 (이 경우 로컬에서 사용 가능)해야하는 이유가 있습니까?
nuget pack
아래의 nuspec 파일이있는 프로젝트 디렉터리에서 호출 할 때마다 릴리스 모드로만 컴파일 한 코드에서 디버그 폴더 ( "\bin\Debug\SomeProject.dll"
) 에서 DLL을 찾지 못한다고 불평합니다 . 디버그 모드에서 컴파일하면 해당 파일이 거기에 있고 제대로 압축됩니다.
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>$id$</id>
<version>$version$</version>
<authors>$author$</authors>
<owners>$author$</owners>
<iconUrl>http://somewhere/project.png</iconUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
</metadata>
</package>
답변
다음과 같이 해결할 수 있습니다 : NuGet.exe pack Foo.csproj -Prop Configuration=Release
( 참조 ).
답변
빌드 후 이벤트를 사용 중이고 디버그 또는 릴리스 구성을 사용하여 패키지를 생성하려는 경우 다음과 같이 빌드 후 이벤트 명령 줄을 설정할 수 있습니다.
"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)
답변
를 실행할 때 NuGet이 자동으로 릴리스 모드를 사용하도록하려면 nuget pack
다음을 수행합니다.
.csproj
텍스트 편집기에서 파일을 엽니 다 .-
다음 줄을 찾으십시오.
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
- 이 라인에서 교체
Debug
로Release
. - 변경 사항을 저장하다.
답변
여기에 대한 답변은 좋지만 .NET Standard 프로젝트에서 많은 문제가 발생했습니다. 릴리스 바이너리 만 게시 할 프로젝트가 있었지만 기본 빌드 출력 경로를 따르지 않았습니다.
나는 이것을 내 CSProj에 추가하여 여기 에서 수락 된 답변을 사용할 수 있었습니다 .
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>