Visual Studio를 사용하고 있다면 composite.generated.dll을 제거하면 새 파일을 다시 작성하고 만들 수 있지만 프로덕션의 해당 파일이 어떤 이유로 제거되면 다시 작성할 수 있다는 것을 알고 있습니다. 나는 약간의 테스트를 수행했고 그것이 할 수 없다는 가정하에 왔지만, 단지 composite.required를 완료하기 위해 할 수있는 일을 놓치지 않고 있는지 확인하고 싶었다. 존재하지 않습니다.composite.generated.dll이 존재하지 않는 경우 complete를 재 작성 할 수 있습니까?
답변
TL;
DR 확인은 동적 데이터 유형이 있고, 당신이 할 경우, 당신의 App_Code에는 코드가 동적 유형을 참조하지 있는지 확인하지.
롱 버전 Composite.Generated.dll 동적 유형에 대한 데이터를 containst DataProvider에를 대상으로 런타임에 컴파일되는 모든 데이터 유형/인터페이스를 구현하는 클래스가 포함되어
.
정적 유형, 즉 솔루션에서 만든 인터페이스 파일을 사용하여 작업 할 때 모든 코드가 해당 코드를 참조하며 언제든지 Composite.Generated.dll에 대한 참조가 없으므로 웹 사이트를 시작할 수 있습니다 Composite는 누락되었거나 오래된 파일 인 경우 Composite.Generated.dll을 다시 컴파일 할 수 있습니다.
동적 유형을 사용하는 경우 인터페이스 파일을 만들지 않고 CMS 편집기를 사용하여 유형을 만듭니다. 배후에서는 Composite가 인터페이스를 만들고이를 Composite.Generated.dll에 추가하여 App_Code 내의 코드가이 인터페이스를 찾고 참조 할 수있게합니다. 문제는 순환 종속성이 있다는 것입니다. Composite.Generated.dll을 삭제 한 경우 웹 사이트를 시작할 수 없습니다. 먼저 자동으로 App_Code의 모든 코드를 컴파일하려고하므로 더 이상 존재하지 않는 인터페이스를 참조하기 때문에 실패합니다. 이 때문에 Composite는 고전적인 닭고기 및 계란 문제 인 Composite.Generated.dll을 시작하고 다시 컴파일 할 수 없습니다.
이 시나리오는 웹 사이트 시작을 허용하는 App_Code에서 모든 파일을 이동하는 것입니다. Composite는 Composite.Generated.dll 파일을 다시 컴파일 할 수 있으며 파일을 다시 App_Code로 이동할 수 있습니다.
보다 강력한 솔루션은 제작 과정에서 동적 유형을 잊어 버리는 것입니다. 개발 중에는 빠른 프로토 타이핑이 가능하지만 생산 현장에서 너무 많은 두통을줍니다.
귀하의 질문에 도움이 되었다면 친절하게 답변을 표시 할 수 있습니까? –
대단히 감사합니다. 꽤 도움이되었습니다. 우리는 몇 가지 환경을 개발하고 모든 것을 동일하게 유지함으로써 문제를 일으키지 않고 사이트를 이동할 수 있다는 점이 우리가 계속 작업하고있는 문제였습니다. 주로 복합체의 데이터 유형이 각 환경에서 추가되고 변경되어 GUIDS가 일치하지 않는 문제가 발생하는 경우. – FewestKitten896