mirror of
https://github.com/Kitware/CMake.git
synced 2026-05-04 05:10:10 -05:00
VS: Do not reference output assemblies if not possible for CSharp target
Since commit v3.9.0-rc4~4^2 (Vs: allow CSharp targets to be linked to CXX targets, 2017-06-20) CSharp targets get `ProjectReference` entries to their dependencies. This causes VS to also reference the dependency's output assembly by default, which is incorrect for non-managed targets. Fix this by setting `ReferenceOutputAssembly` to `false` for targets that can't provide output assemblies. Unmanaged C++ targets (shared libs & executables) can still be referenced and a warning will be shown in the IDE but the build will not break anymore. Fixes: #17172
This commit is contained in:
committed by
Brad King
parent
2990799227
commit
7e57e6ae12
@@ -3502,6 +3502,13 @@ void cmVisualStudio10TargetGenerator::WriteProjectReferences()
|
||||
(*this->BuildFileStream) << "</Project>\n";
|
||||
this->WriteString("<Name>", 3);
|
||||
(*this->BuildFileStream) << name << "</Name>\n";
|
||||
if (csproj == this->ProjectType) {
|
||||
if (!static_cast<cmGlobalVisualStudioGenerator*>(this->GlobalGenerator)
|
||||
->TargetCanBeReferenced(dt)) {
|
||||
this->WriteString(
|
||||
"<ReferenceOutputAssembly>false</ReferenceOutputAssembly>\n", 3);
|
||||
}
|
||||
}
|
||||
this->WriteString("</ProjectReference>\n", 2);
|
||||
}
|
||||
this->WriteString("</ItemGroup>\n", 1);
|
||||
|
||||
Reference in New Issue
Block a user