.NET 외부 DLL을 단일 실행 파일에 결합하기 위해 NuGet 패키지 MSBuild.ILMerge.Task
을 사용하고 있습니다. 그것은 매력처럼 작동합니다. 내가 디버깅하는 동안 편집하려고하면어떻게 MSBuild.ILMerge.Task를 일시적으로 비활성화 할 수 있습니까?
지금, 비주얼 스튜디오는 말한다 :
어셈블리가 나는 그것이 가지고있는 단점 같아요
로드되지 않은 경우
변경이 허용되지 않습니다 모든 단일 .exe로 종속성 (나는 그것에 대해 모르겠다, 그것은 단지 추측이다).
하지만 어쨌든 빌드시 MSBuild.ILMerge.Task
을 사용하는 것이 좋지만 디버그에서는 사용하지 않는 것이 좋습니다. 아무도 이것을 달성하는 방법을 알고 있습니까?
NuGet을 통해 MSBuild.ILMerge.Task
이 설치되면 "다시 작성"을 누르면 자동으로 단일 .exe (.config 파일을 외부에 .config 파일을 외부에 넣음)가 생성됩니다. 당신은 아무것도 구성 할 필요가 없으며, 이것이 왜 프로세스의 내부 동작을 추측 할 수 없으며 프로세스를 비활성화하는 방법입니다.
자세한 내용은 ILMerge에 대한 블로그 게시물을 작성하고 있습니다. 내가 기록하려고 모든 방법에의 문제 및주의 사항 :
http://localcode.wikidot.com/merge-all-binary-files-dll-s-etc-into-a-single-exe
EDIT1 : 나는 NuGet 패키지는 자동으로 다음 정보와 .props
파일을 설정하는 것으로 나타났습니다 :
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
나는 DefaultTargets="Build"
을 찾고 디버그를 사용 중지하는 방법을 찾았으며 그 방법을 설명하는 것으로 보이는 this post을 발견했습니다.
Edit2가 : 내 .csproj에서이 줄을 제거하면
, 그것은 제대로 ILMerge 편집 건너 뜁니다 : 그것은 뭔가
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.props'))" />
<Error Condition="!Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets'))" />
</Target>
<Import Project="..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets" Condition="Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets')" />
을하지만, 조금 손수 비현실적 보인다 잠시 동안 ...
Nuget 패키지에 매우 유용합니다! 모든 개발 및 릴리스에 디버그 구성을 사용할 수 있습니다. 단위 테스트를 실행할 때 불쾌한 빌드 오류가 발생했으며이 조건 기능으로 인해 시간이 절약되었습니다. –