2012-10-15 13 views
5

Często widzę sytuację, gdy odwołania do zestawu zawierają niewłaściwą ścieżkę HintPath, co może powodować dziwne losowe niepowodzenia.MSBuild wymusza sprawdzanie poprawności HintPath

Na przykład masz niewłaściwą ścieżkę HintPath, ale w GAC masz odpowiedni zestaw. Będzie to oznaczać, że projekt zostanie skompilowany poprawnie na komputerze, ale zakończy się niepowodzeniem na innych.

W moim przypadku jest odwrotnie, jest biblioteka w GAC nawet na serwerze CI, więc ten problem nie będzie wykrywalny przez ciągłą integrację.

Szukam czegoś w rodzaju niestandardowego zadania MSBuild, które sprawdzi wszystkie ścieżki HintPath i spowoduje niepowodzenie kompilacji, jeśli którykolwiek z nich jest nieprawidłowy.

Odpowiedz

0

Jeśli chcesz, aby kompilacja nie powiodła się, jeśli ścieżka podpowiedzi jest nieprawidłowa, dlaczego nie chcesz odwoływać się do czegoś jawnie? Jest to SOP w mojej firmie ze względu na posiadanie wielu wersji tej samej biblioteki.

Na przykład:

<Reference Include="C:\Path\To\Library\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

Albo, jeśli chcesz odwołać biblioteki oparte na jakiejś ścieżce dynamicznie, można ustawić pewne właściwości msbuild, powiedzmy, „ExternalLibs”, które wskazuje do katalogu biblioteki (jeśli trzymać biblioteki w sterowaniu źródłami itp.). Następnie możesz ustawić tę właściwość za pomocą wiersza poleceń (po wywołaniu msbuild) lub nadać mu jakąś wartość domyślną, którą każdy użytkownik może przesłonić w swoich plikach .user, na przykład.

<Reference Include="$(ExternalLibs)\MyReference.dll"> 
     <Private>False</Private> 
    </Reference> 

To rozwiązanie jest dość elastyczne.

Powiązane problemy