모든 페이지의 유효성을 검사하는 사용자 지정 MSBuild 작업으로이를 구현할 수 있습니다. 예를 들어 BasePage
만 Page
에서 상속 받음을 확인하는 Task
입니다. 다른 클래스는 Page
에서 상속하는 경우, 오류가 출력에 기록되고 빌드가 실패합니다
public class CheckBasePage : Task
{
public override bool Execute()
{
var assm = Assembly.LoadFile("/path/to/WebsiteAssembly.dll");
var types = assm.GetTypes();
var pages = new List<string>();
foreach (var t in types)
{
if (t.BaseType == typeof(Page) && t.Name != "BasePage")
{
pages.Add(t.FullName);
}
}
if (pages.Count > 0)
{
Log.LogError("The following pages need to inherit from BasePage: [" + string.Join(",", pages) + "]");
return false;
}
return true;
}
}
그런 다음 프로젝트 파일의 빌드 프로세스의 일환으로 사용자 지정 작업을 추가합니다 :
<UsingTask TaskName="CheckBasePage" AssemblyFile="/path/to/MyCustomTasksAssembly.dll" />
<Target Name="PostBuild">
<CheckBasePage />
</Target>
이제는 MyCustomTasksAssembly
이 이와 같이 사용자 지정 MSBuild 작업을 관리하기 위해 만드는 별도의 프로젝트라고 가정합니다. CheckBasePage
작업을 나머지 코드와 동일한 프로젝트에 포함 시키려면 same trick from here을 적용해야합니다.
[** FxCop **] (http://msdn.microsoft.com/en-us/library/bb429476(v=80) .aspx)와 같은 도구를 사용해 보셨습니까? 또한 모든 페이지가'BasePage'를 확장하는지 확인하기 위해 사용자 정의 빌드 단계를 가질 수 있습니다. – mellamokb