Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
ostrzeżenie dotyczące operacji metadanych (HRESULT): warning_message
Uwagi
Konsolidator wykrył różnice metadanych podczas scalania:
Co najmniej jeden zestaw, do którego odwołuje się obecnie zestaw, jest kompilowany.
Co najmniej jeden plik kodu źródłowego w kompilacji.
Na przykład LNK4227 mogą być spowodowane tym, że masz dwie funkcje globalne o tej samej nazwie, ale informacje o parametrach zadeklarowane inaczej (czyli deklaracje nie są spójne we wszystkich wierszach). Użyj ildasm.exe /TEXT /METADATA object_file w każdym pliku .obj, aby zobaczyć, jak typy się różnią.
LNK4227 służy również do zgłaszania problemów pochodzących z innego narzędzia. Wyszukaj komunikat ostrzegawczy, aby uzyskać więcej informacji.
Aby rozwiązać problem z ostrzeżeniem, należy rozwiązać problemy z metadanymi.
Przykłady
LNK4227 jest generowany, gdy zestaw, do którego odwołuje się odwołanie, został podpisany inaczej niż zestaw, do którego się odwołuje.
Poniższy przykład generuje LNK4227:
// LNK4227.cpp
// compile with: /clr
using namespace System::Reflection;
[assembly:AssemblyDelaySignAttribute(false)];
int main() {}
a następnie,
// LNK4227b.cpp
// compile with: /clr LNK4227.cpp /FeLNK4227b.exe
using namespace System::Reflection;
using namespace System::Runtime::CompilerServices;
[assembly:AssemblyDelaySignAttribute(true)];
// Try the following line instead
// [assembly:AssemblyDelaySignAttribute(false)];
ref class MyClass
{
};
LNK4227 można również wygenerować, gdy numery wersji w niewłaściwym formacie są przekazywane do atrybutów zestawu. Notacja "*" jest specyficzna dla .AssemblyVersionAttribute Aby rozwiązać ten problem, użyj tylko liczb w atrybutach wersji innych niż AssemblyVersionAttribute.
Poniższy przykład generuje LNK4227:
// LNK4227e.cpp
// compile with: /clr /LD /W1
using namespace System::Reflection;
[assembly:AssemblyVersionAttribute("2.3.*")]; // OK
[assembly:AssemblyFileVersionAttribute("2.3.*")]; // LNK4227
// try the following line instead
// [assembly:AssemblyFileVersionAttribute("2.3")];