Отладочные символы в режиме выпуска

Мне действительно нравится Hafthor сообщение в блоге , и добавить мои два цента к этому обсуждению, я хотел бы сказать, что, для меня всегда было легко иметь бросок СЛОЯ ДАННЫХ только один тип исключения (DataAccessException). Таким образом, моя БИЗНЕС-LAYER знает, какое исключение ожидать и ловит его. Затем в зависимости от дальнейших бизнес-правил (т.е. если мой бизнес-объект участвует в рабочем процессе и т.д.), я могу выдать новое исключение (BusinessObjectException) или продолжить двигаться без ре/броска.

я сказал бы, используйте попытку.. поймайте каждый раз, когда это необходимо, и используйте его мудро!

, Например, этот метод участвует в рабочем процессе...

Комментарии?

public bool DeleteGallery(int id)
{
    try
    {
        using (var transaction = new DbTransactionManager())
        {
            try
            {
                transaction.BeginTransaction();

                _galleryRepository.DeleteGallery(id, transaction);
                _galleryRepository.DeletePictures(id, transaction);

                FileManager.DeleteAll(id);

                transaction.Commit();
            }
            catch (DataAccessException ex)
            {
                Logger.Log(ex);
                transaction.Rollback();                        
                throw new BusinessObjectException("Cannot delete gallery. Ensure business rules and try again.", ex);
            }
        }
    }
    catch (DbTransactionException ex)
    {
        Logger.Log(ex);
        throw new BusinessObjectException("Cannot delete gallery.", ex);
    }
    return true;
}

6
задан o.k.w 12 November 2009 в 00:47
поделиться

2 ответа

Хорошо, я нашел ответ. Вы можете установить debug = "false" для оптимизации, а затем установить compilerOptions = "/ debug: pdbonly" в настройках компилятора system.codedom для получения символов. Вот соответствующие отрывки из файла web.config:

<system.web>
  ....
  <compilation debug="false" defaultLanguage="c#">
  ...
  </compilation>
</system.web>
<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
        type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
        compilerOptions="/debug:pdbonly">
      <providerOption name="CompilerVersion" value="v3.5"/>
      <providerOption name="WarnAsError" value="false"/>
    </compiler>
    ...
  </compilers>
</system.codedom>
5
ответ дан 17 December 2019 в 02:30
поделиться

Если я не упускаю чего-то, разница между отладкой и выпуском сборки заключается в оптимизации. Вы должны иметь возможность создать нормальный двоичный файл отладки с помощью pdb и обязательно включить все параметры оптимизации в настройках проекта. Afaik, если нет исключения, файл pdb будет загружен и т. Д.

1
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: