13

हमने हाल ही में विजुअल स्टूडियो को 2010 से 2013 तक अपग्रेड किया है और सबकुछ एक चीज़ को छोड़कर पहले जैसा ही काम कर रहा है। 2010 में कोड हस्ताक्षर केवल प्रोजेक्ट को प्रकाशित करते समय किया गया था, लेकिन 2013 में जब भी हम प्रोजेक्ट बनाते हैं तो आउटपुट असेंबली पर हस्ताक्षर करना चाहते हैं।विजुअल स्टूडियो 2013 में डीबग बिल्ड के लिए मैं कोड हस्ताक्षर कैसे अक्षम कर सकता हूं?

मुझे इसके बारे में कोई भी परिणाम ऑनलाइन खोजने का प्रयास करने में समस्याएं आ रही हैं, सबकुछ केवल पहले स्थान पर साइन अप करने के तरीके को इंगित करता है, न कि सामान्य डीबग बिल्ड के दौरान इसे हस्ताक्षर करने से कैसे रोकें।


मैं एक नई परियोजना बनाया है और निर्धारित करने के लिए क्या एक सेटिंग सामान्य बनाता है के दौरान हस्ताक्षर किए जाने की आवश्यकता को ट्रिगर हो सकता है सेटिंग्स के साथ खेलना शुरू कर दिया। सुरक्षा टैब के अंतर्गत प्रोजेक्ट प्रॉपर्टी पेज में, यदि "क्लिकऑन सुरक्षा सेटिंग्स सक्षम करें" चेक बॉक्स चेक किया गया है तो 2013 को हस्ताक्षर चरण की आवश्यकता है लेकिन 2010 में यह आवश्यकता प्रतीत नहीं होती है।

मुझे अभी भी यह पुष्टि करने की आवश्यकता है कि यह इस व्यवहार के लिए एकमात्र निर्णय बिंदु है या नहीं।


पुष्टि की।

मैंने एक ही खाली WinForms एप्लिकेशन के साथ दो समाधान बनाए। विजुअल स्टूडियो 2010 में एक समाधान बनाया गया था और दूसरा विजुअल स्टूडियो 2013 में बनाया गया था। मैं प्रत्येक पर प्रोजेक्ट गुणों में गया और हस्ताक्षर टैब के माध्यम से सक्षम हस्ताक्षर किए और फिर सुरक्षा टैब में "क्लिकऑन सुरक्षा सेटिंग्स सक्षम करें" की जांच की "यह एक पूर्ण विश्वास आवेदन है "। ध्यान दें कि स्मार्ट-कार्ड पर प्रमाण पत्र के साथ परियोजनाओं पर हस्ताक्षर किए जा रहे हैं जो पिन सक्षम है।

वीएस 2013 डीबग मोड, 2010 में सामान्य निर्माण के दौरान स्मार्ट कार्ड पिन के लिए संकेत देता है। क्यों दो संस्करणों और 2013 में इसे ठीक करने के लिए कैसे के बीच एक अंतर 2010 की तरह


मैं परीक्षण समाधान मैं नीचे बनाई गई के लिए परियोजना फ़ाइलों सहित हूँ व्यवहार करने के लिए नहीं है अब सवाल मूल रूप से है। मतभेदों की तुलना में कुछ भी स्पष्ट रूप से अलग नहीं है। मैंने परियोजनाओं के बीच मतभेदों को कम करने के लिए वीएस 2010 परियोजना के समान ढांचे को लक्षित करने के लिए वीएस 2013 प्रोजेक्ट को बदलने का भी प्रयास किया - इससे व्यवहार अंतर नहीं बदलता है।

विजुअल स्टूडियो 2010 परियोजना फ़ाइल

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">x86</Platform> 
    <ProductVersion>8.0.30703</ProductVersion> 
    <SchemaVersion>2.0</SchemaVersion> 
    <ProjectGuid>{E31DA60C-E444-4E34-AF6D-5B4588CC1F8E}</ProjectGuid> 
    <OutputType>WinExe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>SigningTest1</RootNamespace> 
    <AssemblyName>SigningTest1</AssemblyName> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <TargetFrameworkProfile>Client</TargetFrameworkProfile> 
    <FileAlignment>512</FileAlignment> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 
    <PlatformTarget>x86</PlatformTarget> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <PropertyGroup> 
    <SignManifests>true</SignManifests> 
    </PropertyGroup> 
    <PropertyGroup> 
    <ManifestCertificateThumbprint>22E252B5076264F4F2CD88983A9053D554CCD185</ManifestCertificateThumbprint> 
    </PropertyGroup> 
    <PropertyGroup> 
    <TargetZone>LocalIntranet</TargetZone> 
    </PropertyGroup> 
    <PropertyGroup> 
    <GenerateManifests>true</GenerateManifests> 
    </PropertyGroup> 
    <PropertyGroup> 
    <ApplicationManifest>Properties\app.manifest</ApplicationManifest> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Core" /> 
    <Reference Include="System.Xml.Linq" /> 
    <Reference Include="System.Data.DataSetExtensions" /> 
    <Reference Include="Microsoft.CSharp" /> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Deployment" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Windows.Forms" /> 
    <Reference Include="System.Xml" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="Form1.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="Form1.Designer.cs"> 
     <DependentUpon>Form1.cs</DependentUpon> 
    </Compile> 
    <Compile Include="Program.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    <EmbeddedResource Include="Properties\Resources.resx"> 
     <Generator>ResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.cs</LastGenOutput> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <Compile Include="Properties\Resources.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Resources.resx</DependentUpon> 
    </Compile> 
    <None Include="Properties\app.manifest" /> 
    <None Include="Properties\Settings.settings"> 
     <Generator>SettingsSingleFileGenerator</Generator> 
     <LastGenOutput>Settings.Designer.cs</LastGenOutput> 
    </None> 
    <Compile Include="Properties\Settings.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Settings.settings</DependentUpon> 
     <DesignTimeSharedInput>True</DesignTimeSharedInput> 
    </Compile> 
    </ItemGroup> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets. 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    </Target> 
    --> 
</Project> 

विजुअल स्टूडियो 2013 परियोजना फ़ाइल

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 
    <PropertyGroup> 
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> 
    <ProjectGuid>{732A657C-452D-4942-8832-89A14314739C}</ProjectGuid> 
    <OutputType>WinExe</OutputType> 
    <AppDesignerFolder>Properties</AppDesignerFolder> 
    <RootNamespace>SigningTest2013</RootNamespace> 
    <AssemblyName>SigningTest2013</AssemblyName> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
    <TargetFrameworkProfile>Client</TargetFrameworkProfile> 
    <FileAlignment>512</FileAlignment> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug\</OutputPath> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <DebugType>pdbonly</DebugType> 
    <Optimize>true</Optimize> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>TRACE</DefineConstants> 
    <ErrorReport>prompt</ErrorReport> 
    <WarningLevel>4</WarningLevel> 
    </PropertyGroup> 
    <PropertyGroup> 
    <SignManifests>true</SignManifests> 
    </PropertyGroup> 
    <PropertyGroup> 
    <ManifestCertificateThumbprint>22E252B5076264F4F2CD88983A9053D554CCD185</ManifestCertificateThumbprint> 
    </PropertyGroup> 
    <PropertyGroup> 
    <TargetZone>LocalIntranet</TargetZone> 
    </PropertyGroup> 
    <PropertyGroup> 
    <GenerateManifests>true</GenerateManifests> 
    </PropertyGroup> 
    <PropertyGroup> 
    <ApplicationManifest>Properties\app.manifest</ApplicationManifest> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="System" /> 
    <Reference Include="System.Core" /> 
    <Reference Include="System.Xml.Linq" /> 
    <Reference Include="System.Data.DataSetExtensions" /> 
    <Reference Include="Microsoft.CSharp" /> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Deployment" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Windows.Forms" /> 
    <Reference Include="System.Xml" /> 
    </ItemGroup> 
    <ItemGroup> 
    <Compile Include="Form1.cs"> 
     <SubType>Form</SubType> 
    </Compile> 
    <Compile Include="Form1.Designer.cs"> 
     <DependentUpon>Form1.cs</DependentUpon> 
    </Compile> 
    <Compile Include="Program.cs" /> 
    <Compile Include="Properties\AssemblyInfo.cs" /> 
    <EmbeddedResource Include="Properties\Resources.resx"> 
     <Generator>ResXFileCodeGenerator</Generator> 
     <LastGenOutput>Resources.Designer.cs</LastGenOutput> 
     <SubType>Designer</SubType> 
    </EmbeddedResource> 
    <Compile Include="Properties\Resources.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Resources.resx</DependentUpon> 
     <DesignTime>True</DesignTime> 
    </Compile> 
    <None Include="Properties\app.manifest" /> 
    <None Include="Properties\Settings.settings"> 
     <Generator>SettingsSingleFileGenerator</Generator> 
     <LastGenOutput>Settings.Designer.cs</LastGenOutput> 
    </None> 
    <Compile Include="Properties\Settings.Designer.cs"> 
     <AutoGen>True</AutoGen> 
     <DependentUpon>Settings.settings</DependentUpon> 
     <DesignTimeSharedInput>True</DesignTimeSharedInput> 
    </Compile> 
    </ItemGroup> 
    <ItemGroup> 
    <None Include="App.config" /> 
    </ItemGroup> 
    <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
     Other similar extension points exist, see Microsoft.Common.targets. 
    <Target Name="BeforeBuild"> 
    </Target> 
    <Target Name="AfterBuild"> 
    </Target> 
    --> 
</Project> 

मैं जब मैं यह कर सकते हैं प्रत्येक के लिए एक पूर्ण समाधान अपलोड करने के लिए प्रयास करेंगे। अधिकांश फाइल साझा करने वाली वेबसाइटों को अवरुद्ध होने के कारण मैं अपने वर्तमान कंप्यूटर से ऐसा करने में असमर्थ हूं।

+0

मैं परियोजना गुणों में कोई पोस्ट-निर्माण की घटनाओं की है। हमने यह देखा है कि यह दो अलग-अलग कंप्यूटरों पर तीन अलग-अलग समाधानों के लिए हो रहा है। – Anthony

+0

@@ एंथोनी सुरक्षा टैब क्लिक करें, चयनित अनुमति सेट चेक बॉक्स के साथ इस आवेदन के लिए क्लिक करें उन्नत button.Select डीबग, और फिर ठीक क्लिक आप परियोजना डिजाइनर की कोशिश की है,।? –

+1

क्या आप कहीं और प्रोजेक्ट फाइलों को साझा कर सकते हैं? मेरा मतलब है, दो परियोजनाओं (और समाधान) जिन्हें आपने वीएस -2010 और वीएस2013 व्यवहारों की पुनरुत्पादन और तुलना करने के लिए बनाया है। यदि आप प्रोजेक्ट फ़ाइलों को एक साधारण टेक्स्ट एडिटर (नोटपैड कर सकते हैं) के साथ खोलते हैं, तो आप उनकी तुलना करने में सक्षम होंगे और शायद यह निर्धारित कर सकते हैं कि कौन से प्रोजेक्ट गुण हस्ताक्षर व्यवहार को प्रभावित कर सकते हैं। – Leandro

उत्तर

11

इस पोस्ट में व्यवहार में बदलाव के लिए अब तक का सबसे अच्छा समाधान शामिल है। समाधान Leandro Taset द्वारा comment to the original question:

प्रोजेक्ट के लिए कोड हस्ताक्षर की आवश्यकता के लिए, इसकी संबंधित .csproj फ़ाइल खोलें। आप के रूप में सूचीबद्ध उस फ़ाइल में सूचीबद्ध एक PropertyGroup नोड के अंदर एक SignManifests नोड को खोजने के लिए सक्षम होना चाहिए इस प्रकार है:

<PropertyGroup> 
    <SignManifests>true</SignManifests> 
</PropertyGroup> 

यह गुण दोनों VS2010 और VS2013 परियोजना फाइलों में पता चलता है और परियोजना गुंजाइश पर सूचीबद्ध है।आप दो अलग अलग Property Group नोड्स निम्नलिखित के समान दिखाई खोजने के लिए सक्षम होना चाहिए:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <!-- There may be several properties already in the PropertyGroup node --> 
</PropertyGroup> 

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <!-- There may be several properties already in the PropertyGroup node --> 
</PropertyGroup> 

ये PropertyGroup नोड्स परियोजना गुण जो सशर्त वर्तमान विन्यास और मंच के आधार पर लागू होते हैं जब आप परियोजना का निर्माण निशाना बनाया जा रहा परिभाषित करते हैं।

आप सशर्त PropertyGroup नोड्स में से प्रत्येक में SignManifests नोड आप पहली बार पाया निकालकर एक नया SignManifests नोड जगह चाहता हूँ:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <!-- --> 
    <SignManifests>false</SignManifests> 
</PropertyGroup> 

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <!-- --> 
    <SignManifests>true</SignManifests> 
</PropertyGroup> 

यह VS2013 थोड़ा बेहतर व्यवहार करने के लिए कारण होगा। के दौरान रिलीज बनाता VS2013 प्रकट हस्ताक्षर करने का प्रयास करेंगे (अच्छी तरह से, उदाहरण के रिलीज में AnyCPU को लक्षित बनाता है) और डीबग में मोड ऐसा नहीं होगा।

एक जोड़े को इस समाधान के लिए चेतावनियां:

  1. यह वास्तव में कैसे VS2010 व्यवहार करने के तरीके ClickOnce पर हस्ताक्षर सक्षम किया गया है नहीं है। वीएस -2010 केवल क्लिकऑन प्रकाशन के दौरान साइन इन करेगा, यह किसी बिल्ड के दौरान साइन इन नहीं करता है (कॉन्फ़िगरेशन और लक्ष्य प्लेटफॉर्म पर ध्यान दिए बिना)।
  2. आप VS2013 में परियोजना संपत्तियों के हस्ताक्षर टैब खोलते हैं, तो यह दिखाई देगा कि ClickOnce हस्ताक्षर करने (चाहे विन्यास और लक्ष्य मंच के) सक्षम नहीं है। इसे मूर्ख मत बनो, यह अभी भी रिलीज बिल्ड के दौरान संपत्ति संकेत होगा। इस टैब पर चेकबॉक्स को चेक करने के लिए हमें वापस डाल जहां हम शुरू कर दिया इस पर कोई सशर्त, बिना Project स्तर पर SignManifests नोड फिर से जोड़ देगा। अन्य टैब में प्रोजेक्ट सेटिंग्स बदलना नोड को दोबारा जोड़ता नहीं है, इसलिए आप कहीं और आवश्यक परियोजना संपत्ति परिवर्तन करने के लिए स्वतंत्र हैं।
संबंधित मुद्दे