Это ожидаемое поведение. Сборки .NET «зависят» от неуправляемой DLL, и при изменении DLL они обнаруживают это и перестраивают. Единицей компиляции неуправляемого проекта C ++ является файл .cpp. Единица компиляции сборки .NET - это целая сборка. Нет никакого способа перекомпилировать только один файл .cs (или управляемый c ++).
Вы можете обойти это, используя :: GetProcAddress (), чтобы получить указатели функций на операции в неуправляемых библиотеках DLL. Затем вы можете удалить зависимость сборки .NET от файла .lib неуправляемых библиотек DLL, и он больше не будет перекомпилироваться каждый раз, когда изменяется .lib.