2011-02-25 12 views

Odpowiedz

11

Czy zaznaczyłeś zespół do podpisywania opóźnień w AssemblyInfo.cpp?

[assembly:AssemblyKeyFileAttribute("MyKey.snk")]; 
[assembly:AssemblyDelaySignAttribute(true)]; 
+1

Skąd to iść w Managed C++ zespole? – Justin

+3

zobacz [tutaj] (http://stackoverflow.com/questions/158821/managed-c-assembly-attributes) – adrianm

+0

Tak cholernie denerwujące, że to było/nie jest udokumentowane. Spędziłem ponad dwa dni próbując dowiedzieć się, dlaczego to nie zadziała po przejściu na konfigurację 32-bitową, ale nie było wymagane w wersji 64-bitowej. – bbqchickenrobot

7

Pomyślałem ten jeden w końcu - jak na połączonym pytanie I nie można po prostu ustawić opcję Linker/Advanced/KeyFile i oczekiwać, że do pracy - muszę korzystać sn.exe podpisać zespół, jednak ja również nadal potrzebujesz ustawić opcję Linker/Advanced/KeyFile.

W skrócie podpisać montaż/CLR trzeba zarówno:

  1. Określ keyfile na stronie Linker/Advanced/KeyFile właściwości
  2. Korzystanie sn.exe podpisać zespół jako etap post-build

(Uważam, że używanie [assembly:AssemblyKeyFileAttribute("MyKey.snk")] jest równoważne ustawieniu pliku klucza w oknie dialogowym właściwości projektu).

+0

Powinno działać, ale czasami tak nie jest i trzeba używać atrybutów. – surfen

6

The marked answer pomógł dotrzeć do ostatecznego rozwiązania (dzięki czemu otrzymuje +1 ode mnie).

Jednak musiałem spędzić kilka frustrujących minut, zastanawiając się, jak stworzyć AssemblyInfo.cpp w VS2010.

Poniżej znajduje się "bardziej" kompletna odpowiedź na problem.

#include "stdafx.h" 

using namespace System; 
using namespace System::Reflection; 
using namespace System::Runtime::CompilerServices; 
using namespace System::Runtime::InteropServices; 
using namespace System::Security::Permissions; 

[assembly:AssemblyKeyFileAttribute("YourAssembly.snk")]; 
[assembly:AssemblyDelaySignAttribute(true)]; 

Następnie jako krok po kompilacji, uruchom sn -Ra YourAssembly.dll YourAssembly.snk

+0

Potrzebowałem średników po atrybutach [assembly]. – Anton