내 핵심 프로젝트에서 참조되는 두 개의 어셈블리로 구성된 타사 라이브러리가 있습니다. 어셈블리 중 하나는 내 핵심 프로젝트의 코드에서 정적으로 참조되며, 다른 어셈블리는 웹 프로젝트의 web.config에서만 사용됩니다. 그러면 핵심 프로젝트가 웹 프로젝트에서 참조됩니다.빌드에서 누락 된 어셈블리
두 번째 어셈블리가 없어져서 web.config를 파싱 할 수 없기 때문에 웹 앱을 시작할 때 앱이 다운되는 문제가 있습니다. 컴파일러는 코어 프로젝트가 느슨하게 web.config를 통해 링크 된 이후로 두 번째 어셈블리를 포함해야한다는 것을 이해할 수 없다고 생각합니다.
웹 프로젝트에 어셈블리를 추가하고 싶지는 않습니다. 왜냐하면 어셈블리가 긴밀한 결합이 될 것이기 때문에 어셈블리에 대한 종속성이있는 웹 프로젝트가 아니라 핵심 프로젝트입니다.
나는 (타사 어셈블리를 사용하는 핵심 프로젝트 클래스)를 해결하는 이런 짓을 :
static MyClass()
{
var dummy = typeof(ThirdPartyClass);
if (dummy == null)
throw new Exception("Do not remove reference to 'ThirdPartyClass'");
}
해킹,하지만 좋은 점의 약간 그것은 단지 핵심 프로젝트에 영향을 미치는 것입니다 그것의 이 프로젝트는이 제 3 자 lib에 대한 지식이 있어야하는 유일한 프로젝트입니다. throw new Exception
은 다른 개발자에게있어 제거 할 수 없다는 것을 이해하고 사용하지 않은 경고를 처리합니다.
제 질문은 이것이 올바른 해결책입니까 아니면 더 좋은 것이 있습니까?
편집 : DLL이 bin 디렉토리에 있지 않기 때문에 만들어진 작은 헬퍼 클래스
public static class Util
{
public static void EnsureStaticReference<T>()
{
var dummy = typeof(T);
if(dummy == null)
throw new Exception(string.Format("This code is used to ensure that the compiler will include assembly"));
}
}
postbuildevents? – giammin
이것은 연결되어 있습니다. [상태 : 수정되지 않음으로 닫힘] (http://connect.microsoft.com/VisualStudio/feedback/details/652785/visual-studio-does-not-copy-referenced-assemblies-through-the-reference-hierarchy), 임시 해결책 : 빌드 후 단계. – CodeCaster
빌드 이벤트가 마술 문자열로 복사 코드를 작성한다는 의미라면 위의 솔루션은 더 깨끗하게 고려해야합니까? – Anders