문제

웹 사이트를 구축하거나 게시 할 때마다 Visual Studio는 web.config 필요하지 않은 수많은 어셈블리를 추가 할 수 있도록 파일.

다시 말해:

web.config 전에:

<configuration>
   <system.web>
      <compilation>
         <assemblies>
         </assemblies>
      </compilation>
   </system.web>
</configuration>

web.config 후에:

<configuration>
   <system.web>
      <compilation>
         <assemblies>
             <add assembly="Microsoft.ReportViewer.Common... />
             <add assembly="Microsoft.ReportViewer.WinForms... />
             <add assembly="System.DirectoryServices... />
             <add assembly="System.Windows.Forms... />
             <add assembly="ADODB... />
             <add assembly="System.Management... />
             <add assembly="System.Data.OracleClient... />
             <add assembly="Microsoft.Build.Utilities... />
             <add assembly="Microsoft.ReportViewer.ProcessingObjectModel... />
             <add assembly="System.Design... />
             <add assembly="Microsoft.Build.Framework... />
         </assemblies>
      </compilation>
   </system.web>
</configuration>

이러한 어셈블리 중 어느 것도 필요하지 않으며 대부분 대상 테스트 또는 생산 서버에는 존재하지 않습니다.

내가 만들 때마다 계속 삭제하지만 진짜 성가신 진짜 빠르게.

지금 내 해결 방법은 web.config 읽기 전용을 남겨 두는 것입니다. 따라서 Visual Studio는 어셈블리를 추가 할 수 없습니다.


업데이트

증거로 스크린 샷 :

이전에 프로젝트 속성 페이지:

link text

web.config 이전 :

alt text

프로젝트 속성 페이지 다음 :

alt text

web.config 이후 :

alt text

두 개 업데이트

웹 사이트가 이러한 외부 참조가 추가되지 않고 작동한다는 것을 명시 적으로 지적해야합니다. 내 임시 솔루션 취소 Visual Studio가 수정하려고 할 때 읽기 전용이라고 불평 할 때마다. 비주얼 스튜디오가 처음부터 수정하려고 시도하는 것을 막을 수 있다면 ...


세 개 업데이트

불가능한 것 같습니다. 누군가가 정답을 자유롭게 줄 수 있습니다. "Visual Studio가 web.config에 어셈블리를 추가하는 것을 막을 수 없습니다.. "그리고 나는 그것을 표시 할 것이다.

내가 질문을 계속 유지하는 유일한 이유는 누군가가 Super Secret 옵션 또는 레지스트리 키 또는 프로젝트 또는 솔루션 설정을 알고 있기를 바랍니다.


업데이트 4

나는 받아 들여진 대답을 받아들이지 않았고, 가능하다면 그것을 받아 들일 것입니다. 나는 여전히 만병 통치약을 바라고 있습니다. 하지만 지금은 다음을 기대하고 있습니다.

  • 답 : 할 수 없습니다 (manu08)
  • 해결 방법 : 필터링 된 GAC 어셈블리 레지스트리 키 (Nebakanezer)

Visual Studio가 내 web.config에 어셈블리를 추가하는 것을 어떻게 중지합니까?

참조

도움이 되었습니까?

해결책

VS2005를 사용하여 .NET 1.1 (vs2003) .aspx를 편집하고 저장 한 다음 Web.Config에 신비하게 인터넷을 갖습니다. 2.0 어셈블리 추가 :

VS2008 또는 VS2010을 사용한 경우에는 발생하지 않습니다. 그래서 나는 이것이 VS2005 IDE의 버그라고 생각합니다.

다른 팁

어쩌면 "Avatar Dotnet Library"는 그 어셈블리 자체를 언급하고있을 것입니다. 프로젝트를 올바르게 배포하려면 참조 된 어셈블리의 참조가 필요합니다. 그렇지 않으면, 참조 된 어셈블리는 어떻게 작동 할 수 있습니까?

참조 된 어셈블리는 존재하지만 자체 참조를 사용하지 않을 수 있습니다.

편집 : 훌륭한 도구 ".NET Reflector"를 사용하여이를 확인할 수 있습니다.

Visual Studio 2005 에이 문제가 있었지만 솔루션이 vs 2008의 솔루션이 작동한다고보고하게되어 기쁩니다. 아래에서 굵은 텍스트를 참조하십시오). web.config 파일에 어셈블리를 추가하기 전에 확인하는 레지스트리 섹션이 있습니다.

열쇠는 다음과 같습니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences

따라서 Visual Studio가 Microsoft.visualstudio.designer.interfaces 어셈블리를 Web.config에 추가하는 것을 원하지 않는다고 가정 해 봅시다. 다음 항목을 레지스트리에 추가하면 설정됩니다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}\FilteredGACReferences\Microsoft.VisualStudio.Designer.Interfaces

그것은 나를 위해 완벽하게 작동했습니다. 그리고 네, 나머지 팀은 똑같이해야하지만 적어도 매번 항목을 수동으로 제거 할 필요는 없습니다 :)

VS 2008에서 작동하려면 레지스트리 경로에서 8.0을 9.0으로 변경하십시오.

"웹 사이트"프로젝트를 "웹 응용 프로그램"프로젝트로 변환하십시오.

"웹 사이트"에는 프로젝트 파일이 없으므로 web.config에 모든 어셈블리 참조가 포함되어 있습니다. "웹 프로젝트"에는 프로젝트 파일이 있으며 모든 참조는 프로젝트 파일에 저장됩니다.

참조를 제거하십시오.

  • 웹 앱인 경우 : 아래에서 참조를 볼 수 있습니다. 솔루션 탐색기.

  • 웹 사이트 인 경우 : Solution Explorer에서 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 선택하십시오. 속성 페이지. 거기에서 그들을 관리하십시오.

HTH

공유 어셈블리가 참조하면 통화 프로젝트에도 추가됩니다.

아바타 라이브러리는 이러한 다른 참조를 만들기 때문에 Visual Studio는 이러한 참조를 기본 프로젝트에 추가합니다. 그렇지 않으면, 필요한 참조가 누락되었으므로 아바타 라이브러리로의 전화는 실패 할 수 있습니다.

글쎄, 이것은 해킹처럼 보일지 모르지만 요구 사항이 주어지면 또 다른 옵션은 런타임에 어셈블리를 사용하여 아바타 어셈블리를 동적으로로드하는 것입니다. 이렇게하면 기본 프로젝트에서 참조를 유지 한 다음 Web.config의 추가 참조 라인을 방지해야합니다. 아바타 프로젝트의 소수의 수업 만 사용하는 경우에만 실용적입니다. 나는 두 프로젝트 모두 메인 프로젝트가 아바타 인스턴스를 처리 할 때 엄격한 타이핑을 유지하기 위해 하나 이상의 아바타 클래스를 구현 한 인터페이스를 가졌다는 세 번째 프로젝트를 만들 것입니다. 나는 이것이 이전에 답변을 제출 한 훨씬 더 많은 작업 일 수 있음을 인정합니다. 이 메소드에 관심이 있으시면 Google을 검색하여 플러그인 작성 .NET

WebApp이 아닌 웹 사이트를 사용하는 한 Visual Studio가 web.config에 어셈블리를 추가하는 것을 막는 방법을 모릅니다. 이 같은 종류의 문제는 회사의 솔루션에도 발생합니다.

Visual Studio가 web.config에 어셈블리를 추가하는 것을 막을 수는 없습니다.

죄송합니다. Visual Studio가 web.config에 어셈블리를 추가하는 것을 막을 수 없습니다., 그러나 모든 것이 손실되지 않습니다.

나는 과거에 이것을 쳤다. 누군가가 저수준 데이터 액세스 어셈블리에 일부 참조 (winforms 포함)를 추가했습니다. 웹 사이트는 저수준 데이터 액세스 어셈블리를 사용하므로 Winforms 등이 web.config 파일에 추가되었습니다.

해결책은 그의 코드를 올바른 어셈블리로 옮기고 잘못된 참조를 제거하는 것이 었습니다.

원치 않는 참조가있는 어셈블리가 어떻게 원치 않는 참조에 의존하는 코드를 호출하지 않는다는 것을 알고 있다면. 그럼 당신은 할 수 있습니다 (이것들 중 어느 것도 좋지 않습니다)

  • Web.config에서 이러한 원치 않는 어셈블리 참조를 제거하는 사용자 정의 설치 동작 작성
  • 빌드 시점에 사용자 정의 MSBuild 액션을 작성하십시오.
  • 응용 프로그램이 설치되면 다른 손으로 작성된 web.config 파일을 사용하십시오.

Visual Studio가 Web.config 파일에 대한 참조를 추가하는 이유를 찾는 데 시간이 걸릴 수 있습니다. 웹 사이트에서 직접 또는 간접적으로 사용되는 모든 어셈블리를 직접 확인해야합니다.

Microsoft가 ASP.NET 2.0에서 웹 사이트를 발명 한 이유를 알고 감사하지만 때로는 평범한 빨다. 실용적이라면 사이트를 웹 응용 프로그램 프로젝트로 변환하면 이와 같은 문제가 사라질 것입니다.

그것이 실용적이지 않은 경우, 가능한 많은 코드를 별도의 클래스 라이브러리 프로젝트로 재수하십시오. 웹 사이트에서 클래스 라이브러리로 이동할 수있는 모든 참조는 web.config 변화.

편집하다: 웹 사이트에서 ASPNET 컴파일러는 모든 것을 컴파일하여 모든 어셈블리 참조가 들어가야합니다. web.config. 그러나 웹 애플리케이션 프로젝트에서 C# 또는 VB 컴파일러는 코드 -Behind 파일을 별도의 DLL로 컴파일 한 다음 ASPNET 컴파일러가 마크 업을 컴파일 할 때 참조합니다. 이 시나리오에서는 어셈블리입니다 Code-Behind 파일에서만 참조되었습니다 Code-Behind DLL에 들어가서 터치하지 않습니다 web.config 조금도. 어셈블리 만 마크 업에서 직접 참조되었습니다 들어갈 것입니다 web.config.

비주얼 스튜디오가 다른 사람들이 참조하는 어셈블리에 대한 참조를 자동으로 추가하는 것을 막을 수 있다고 생각하지 않습니다.

한 가지 솔루션은 이러한 원치 않는 어셈블리 참조를 web.config.

그것들은 프로젝트에서 요구하는 모든 어셈블리, 어떤 모양이나 영지 및 ASP.NET가 런타임에 페이지에서 수행하는 편집을 원조합니다. 아마도 프로젝트에서 사용중인 코드 또는 사용중인 다른 라이브러리에 의해 수입 될 수 있습니다.

그러나.에 따르면 선적 서류 비치. 이것들은 당신의 글로벌 web.config에 정의 된 어셈블리입니다. C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG:

<assemblies>
    <add assembly="mscorlib" />
    <add assembly="System, ..." />
    <add assembly="System.Configuration, ..." />
    <add assembly="System.Web, ..." />
    <add assembly="System.Data, ..." />
    <add assembly="System.Web.Services, ..." />
    <add assembly="System.Xml, ..." />
    <add assembly="System.Drawing, ..." />
    <add assembly="System.EnterpriseServices, ..." />
    <add assembly="System.Web.Mobile, ..." />
    <add assembly="*" />
</assemblies>

당신이 보이면 거기에 있습니다 assembly="*" 참조가 추가됩니다. 그리고 당신이 읽으면 선적 서류 비치 이 명령에 대해 다음과 같이 말합니다.

선택적으로 Asterisk (*) 와일드 카드 문자를 지정하여 응용 프로그램의 bin subdirectory 또는 The.net Framework 설치 디렉토리 (%SystemRoot%에 위치한 응용 프로그램의 개인 어셈블리 캐시 내의 모든 어셈블리를 추가 할 수 있습니다. Microsoft.net framework 버전).

이는 귀하의 /빈 디렉토리 또는 .NET Framework 설치 디렉토리의 모든 어셈블리가 이미 포함되어 있음을 의미합니다.

이것이 당신의 문제에 대해 나에게 알려주는 것은 포함 된 어셈블리가 이미 프로젝트에 어떤 방식 으로든 참조된다는 것입니다. 그리고 아마도 그들은 아마도오고있을 것입니다 Avatar Dot Net Library 또는 페이지의 일부 컨트롤. 아바타 라이브러리의 Visual Studio 프로젝트에서 "참조"폴더를 확인하십시오. 그것이 빌드 프로세스가 이러한 라이브러리를 얻는 곳이기 때문입니다.

다시 말해서 원하지 않는 경우이 라이브러리의 모든 참조에 대한 참조 된 프로젝트를 문지르십시오.

또는 MSBuild XML 파서를 사용하여 빌드 프로세스를 실행할 때마다 Web.config의 해당 섹션을 떨어 뜨릴 수 있습니다. 개인적으로 나는 불리는 작업을 사용합니다 XmlUpdate 내 web.config의 특정 부분을 수정하여 생산을 준비하십시오. 당신이 똑같이하고 싶다면 그것은 MSBuild 커뮤니티 작업.

Vista 또는 Server 08 머신에서 실행중인 경우 APPCMD 명령 줄 유틸리티를 사용하여 수동으로 제거하지 않고 재건 한 후 제거 할 수 있습니다.

http://technet.microsoft.com/en-us/library/cc772200(ws.10).aspx http://learn.iis.net/page.aspx/114/getting-started-with-appcmdexe/

보다 http://msdn.microsoft.com/en-us/library/ms178728.aspx

속성 페이지에 보이는 것이 전부는 아니며 Machine.config 파일에도 암시 적 참조가 존재하며 컴파일 시간에 추가됩니다. 도움이 되었기를 바랍니다.

코드 파일의 "사용"스테이션을 확인하여 .aspx, .ascx 파일의 참조를 확인하는 것으로 시작합니다. 이들 중 일부를 참조하는 것처럼 들립니다 (일부는 새 항목 템플릿 추가에서 기본적으로 추가된다는 것을 알고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top