Вы не можете ссылаться на a.exe из b.dll, поэтому нет, это не решение. Даже если бы a была DLL, вы не смогли бы сделать ссылку, потому что она привела бы к циклической ссылке между сборками, что недопустимо.
Первое решение при рефакторинге вашего кода, решить, принадлежит ли ProjectEventArgs в dll или приложение. Способ сделать это - проверить, какие еще зависимости есть у класса ProjectEventArgs - зависит ли он от других типов из A.exe или других зависимостей нет? (Если последнее, воткните его в dll).
В случае если у него есть зависимости внутри A, вам необходимо абстрагировать функциональность ProjectEventArgs в базовый (абстрактный) класс или интерфейс. (Или, поскольку это уже дочерний элемент EventArgs - разве вы не можете захватить всю необходимую функциональность, просто используя EventArgs из B?)
Действительно может быть с образцом кода вашего класса ProjectEventArgs и фрагментом того, где вы используете / вызываете его для получения фактического примера решения.