Если Project C напрямую не использует какие-либо классы из Project A, нет необходимости ссылаться на Project C на Project A.
Вам все еще понадобится dll Project A, доступная во время выполнения.
Чтобы уточнить «непосредственное использование» - любая ссылка в коде Project C на класс, интерфейс, структуру - что-либо определенное в Project A, а также ссылка на класс или интерфейс, определенный в Project B, но унаследованныйиз базового класса / интерфейса, определенного в Project A.
Вот как это делается при использовании DI (Dependency Injection) - ваш проект B является контрактом между приложением (C) и реализацией сервиса (A),Он содержит интерфейсы и POCO.
Время компиляции, приложение знает только о контракте, контейнер DI времени выполнения загружает реализацию.Изменение реализации не требует перекомпиляции и может быть сделано путем замены dll.