Ao desenvolver um projeto recentemente, planejei usar o NDoc para gerar documentação de ajuda para a biblioteca de classes. Baixei a versão chinesa 1.3 do Percyboy. A documentação dizia que ela suporta .net2.0. Porém, ao usá-lo, descobri que ocorreu uma exceção ao aplicar o NDoc para criar um novo projeto NDoc a partir da solução, e o documento de ajuda não conseguiu. ser gerado com sucesso.
Baixe o programa de origem, use a conversão vs.net2005 para abrir a solução ndoc para depuração, modifique o bug e passe a depuração. Os bugs e soluções relevantes são registrados da seguinte forma. assembly gerado por vs.net , pode ser tratado de acordo.
1. Se o projeto na solução estiver em um diretório com nome chinês, a exceção lançada não poderá ser tratada. A razão é que quando o ndoc analisa o arquivo de solução, ele usa a codificação UTF para abrir o arquivo de solução, fazendo com que os caracteres chineses não sejam processados corretamente. Solução: Abra o arquivo de solução no projeto gui, localize o método read e use (reader=new StreamReader(path)) para abrir o arquivo usando (reader=new StreamReader(path,System.Text.Encoding.GetEncoding(0) )))substituir. Para uso específico do StreamReader, consulte msdn.
2. Ao analisar arquivos de projeto, os arquivos de projeto gerados por vs.net2005 são essencialmente arquivos xml, mas alguns têm tags <?xml version="1.0" encoding="utf-8"?> e alguns arquivos de projeto não, por razões desconhecidas, e não tenho tempo para analisar as razões específicas. Se alguém souber, por favor me diga. Isso leva à necessidade de processar os arquivos do projeto caso a caso. Analisei a ideia original do ndoc e este também é o caso. Talvez os formatos dos dois arquivos do projeto nas versões anteriores a 2005 fossem diferentes, então o ndoc os processou. caso a caso ao analisar os arquivos do projeto. Porém, embora existam diferenças nos arquivos de projeto gerados com vs.net2005, o formato é o mesmo e não precisa ser processado caso a caso. Solução: abra o arquivo do projeto no projeto gui, localize GetConfiguratin(string configName) e altere o seguinte código:
if (_ProjectDocument.FirstChild.Name == "Projeto")
{
nós = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=" '$(Configuração)|$(Plataforma)' == '{0}|AnyCPU' "]", configName ), _ProjectNamespaceManager);
}
outro
{
nós = _ProjectNavigator.Select(String.Format("/VisualStudioProject/CSHARP/Build/Settings/Config[@Name='{0}']", configName));
}
Substitua por:
nós = _ProjectNavigator.Select(string.Format("VS2005:Project/VS2005:PropertyGroup[@Condition=" '$(Configuração)|$(Plataforma)' == '{0}|AnyCPU' "]", configName ), _ProjectNamespaceManager);
Depois de fazer o processamento acima e passar pela compilação, usar a função do ndoc para criar um novo projeto ndoc a partir de uma solução .net pode ser processado normalmente, mas não sei se esse processamento terá algum efeito adverso no soluções geradas por versões anteriores a 2005. Impacto, porém, o tempo de lançamento de 2005 não é curto, e a maioria dos projetos deveria ter sido migrado para 2005, portanto o impacto não deve ser significativo.
http://www.cnblogs.com/yxy21969/archive/2006/11/28/575257.html