일부 데이터베이스 리버스 엔지니어링을 통해 내 자신의 질문에 대한 대답을 찾았습니다. 이 프로세스는 저에게 효과적 이었지만, 모든 사람들에게 효과가 있다는 것을 보장 할 수는 없습니다.
플러그인 등록 도구를 사용하여 플러그인 어셈블리를 바꾸면 세 가지 작업이 수행됩니다.
1) 해당 플러그인의 PluginAssemblyBase 레코드의 OverwriteTime 열이 수정됩니다. 2) 방금 추가 한 플러그인 어셈블리에 대해 새 PluginAssemblyBase 레코드가 추가됩니다. 3) DependencyNodeBase 레코드의 TopSolutionId 열에있는 레코드가 플러그인에 대해 수정됩니다.
이의 반전 프로세스는 다음 SQL 쿼리를 사용하여 수행 하였다
BEGIN TRANSACTION
DELETE dbo.PluginAssemblyBase
WHERE PluginAssemblyIdUnique <> @originalPluginAssemblyIdUnique and Name = @assemblyName and OverwriteTime = 0
UPDATE dbo.PluginAssemblyBase SET
OverwriteTime='1900-01-01 00:00:00.000'
WHERE PluginAssemblyIdUnique = @originalPluginAssemblyIdUnique
UPDATE dbo.DependencyNodeBase SET
TopSolutionId = @ManagedSolutionId
WHERE Objectid = @pluginAssemblyId
COMMIT TRANSACTION
그 스크립트가 다른 사람에 의해 사용할 수 있지만 변수를 설정뿐만 아니라, 당신이 그렇게 거기에 약간의 유효성 검사를 추가 할 수 있습니다 그것은 잘못된 시나리오에서 사용되지 않는다는 것입니다.
내가 묻는 것에 신경 쓰지 않는다면 PluginAssembly 테이블의 관점에서 어떻게 보이겠습니까? 관리 솔루션 가져 오기를 수행 할 때 관리되는 행과 관리되지 않는 행이 모두 제거됩니까? 또는 PluginRegistrationTool을 사용하여 플러그인을 업로드하는 작업은 테이블에 해당 어셈블리 이름의 인스턴스 하나만 유지합니까? – Jason
관리되지 않는 버전은 유형에 관계없이 관리되는 구성 요소 위에 놓이지 않습니다. 모든 관리되지 않는 구성 요소가 기본 솔루션에 병합됩니다. 롤백 할 수 없습니다. –
@ArunVinoth 귀하의 의견이 거짓이라고 확신합니다. 기본 솔루션의 관리되지 않는 구성 요소는 해당 구성 요소의 관리되지 않는 버전이 게시 된 경우 관리되는 구성 요소가 UX에 적용되지 않도록 적용됩니다. 이것은 내가 복수형, 개인적 경험 등을 포함한 여러 소스로부터 훈련받은 것입니다. 당신은 어떤 근원 자료를 사용하고 있습니까? 검토하는 것은 재미있을 것입니다. – Jason