Visual Studio가없는 ASP.NET 응용 프로그램에서 참조를 어떻게 새로 고치나요?
-
22-08-2019 - |
문제
GAC에없는 외부 어셈블리에 의존하는 ASP.NET 응용 프로그램이 있습니다. 앱에는 앱을 컴파일 할 때 어셈블리를 BIN 디렉토리에 복사하는 .refresh 파일이 있습니다.
제작 서버에 앱을 설치할 때 (앱 파일을 가상 디렉토리에 복사하여) BIN 디렉토리는 내가 생각했던 것처럼 .refresh 파일이 있으면 자동으로 업데이트되지 않습니다. ASPNET_COMPILER 도구를 사용해 보았지만 어셈블리가 이미 빈 디렉토리에있을 것으로 예상되기 때문에 작동하지 않습니다.
Visual Studio없이 .NET을 얻으려면 앱의 빈 디렉토리를 업데이트하려면 어떻게해야합니까?
해결책
.refresh 파일은 바로 거기에 있으므로 대 VS가 원본을 추적해야한다는 것을 알 수 있도록하고 변경된 경우 새 버전을 /빈 폴더에 복사하십시오. 원본으로가는 경로가있는 텍스트 파일 일뿐입니다. 수정 된 날짜는 비교에 사용됩니다.
당신이 말할 때:
제작 서버에 앱을 설치하면 (앱 파일을 가상 디렉토리에 복사하여) BIN 디렉토리가 자동으로 업데이트되지 않습니다.
정확히 무슨 뜻입니까? 빈 디렉토리의 내용을 프로덕션 서버에 복사하지 않습니까? 응용 프로그램과 함께 종속 어셈블리를 배포해야합니다.
다른 팁
ASP.NET의 캐시 디렉토리를 지우는 것이 도움이 될 수 있습니다.
C:\WINDOWS\Microsoft.NET\Framework\
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME
.refresh 파일을 삭제하십시오.
간단한 빌드 스크립트를 만드십시오 (CMD, Nant, Rake, Psake를 원하는 것을 사용하여) :
- 해당 파일을 ASP.NET 앱 폴더에 복사하십시오
- ASP.NET 앱을 빌드하십시오.
또는 .csproj 파일을 편집하고 다음과 같은 것을 추가 할 수 있습니다.
<ProjectExtensions>
<PropertyGroup>
<PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent>
</PropertyGroup>
</ProjectExtensions>
이렇게하면 DLL 파일을 ASP.NET 앱의 출력 DIR에 복사하는 사전 빌드 작업이 추가됩니다. MSBuild로 구축해야합니다