2015-04-13 15 views
14

Çok basit bir şey yapmak istiyorum: VS13'teki bir kodu bir projeden diğerine taşıyorum ve veri kümeleriyle garip bir problemle karşılaşıyorum. Basitlik için kaynak projemde, MyDataSet.cs, MyDataSet.Designer.cs, MyDataSet.xsc, MyDataSet.xsd, MyDataSet.xss'dan oluşan MyDataSet adında bir veri kümem var.Visual Studio 2013'teki veri kümesi için "Projeye dahil et" garip davranışı

Bu dosyaları standart windows işlevlerini kullanarak hedef proje klasörüne kopyalarım ve VS13'te Include in Project menü seçeneğini kullanın. Bundan sonra ek bir dosya eklendiğini görüyorum: MyDataSet1.Designer.cs.

cproj dosyalarını kontrol etmeye çalıştım ve bunlar farklı.

Kaynak (hedeften farklı sadece parçalar gösterilmiştir):

<Compile Include="MyDataSet.Designer.cs"> 
    <AutoGen>True</AutoGen> 
    <DesignTime>True</DesignTime> 
    <DependentUpon>MyDataSet.xsd</DependentUpon> 
</Compile> 

<None Include="MyDataSet.xsd"> 
    <SubType>Designer</SubType> 
    <Generator>MSDataSetGenerator</Generator> 
    <LastGenOutput>MyDataSet.Designer.cs</LastGenOutput> 
</None> 

Hedef (kaynağından sadece bir kısmı farklı gösterilmiştir):

<Compile Include="MyDataSet.Designer.cs"> 
    <DependentUpon>MyDataSet.cs</DependentUpon> 
</Compile> 

<Compile Include="MyDataSet1.Designer.cs"> 
    <AutoGen>True</AutoGen> 
    <DesignTime>True</DesignTime> 
    <DependentUpon>MyDataSet.xsd</DependentUpon> 
</Compile> 

<None Include="MyDataSet.xsd"> 
    <Generator>MSDataSetGenerator</Generator> 
    <LastGenOutput>MyDataSet1.Designer.cs</LastGenOutput> 
    <SubType>Designer</SubType> 
</None> 

Ayrıca ben MyDataSet.cs ve MyDataSet1.Designer.cs ad alanlarında olduğunu fark ettim otomatik olarak düzeltmek için değiştirildi.

ReSharper kullanıyorum ve önce bunun bir nedeni olabileceğini düşündüm, ama ben disabled ReSharper ve aynı davranış devam ediyor.

Muhtemelen yeni oluşturulan dosyaları kaldırıp, cproj dosyalarını değiştirerek düzeltebilirim, ancak aslında kopyalamam gereken çok fazla veri kümesi var ve bu tür işleri gerçekten sevmiyorum.

Böyle bir sorunun sebebi olabilecek herhangi bir fikri olan var mı ve nasıl çözülebilir?

+0

Projeye Eklediğinizde, sadece MyDataSet.cs veya tüm dosyaları mı ekliyorsunuz? – ZaXa

+0

Evet, 5 dosyanın tümünü ekliyorum. –

+0

Bu senin problemin olabilir. Sadece MyDataSet.cs dosyasını dahil edin ve geri kalanını genellikle kendi başına bulur. Formlar arasında projeler arasında geçiş yaparken benzer sorunlar yaşadım ve bu yanıttı. – ZaXa

cevap

5

Veritabanını, Solution Explorer'da (genellikle .xsd) veri kümesi kök düğümünü sağ tıklatıp Kopyala'yı seçip ardından hedef projeyi veya proje klasörünü sağ tıklatıp Yapıştır'ı seçin. Bu, dosyaları kopyalamalı ve csproj dosyalarını doğru bir şekilde işaretlemelidir.

+0

Sorun, kaynak veri kümesinin SVN'de olması ve dosyaların geçmişini saklamak için SVN işlevselliğini kullanan dosyaları kopyalarımdır. Korkarım ki sen yapsan tarihe kaybolacaksın. –

+0

Her iki yolu da yapın, böylece kaynak denetim geçmişini koruyabilirsiniz.SVN'yi bir süredir kullanmadım, ama git veya TFS'de bu işe yarar - checkout, csproj'ı doğru almak için Visual Studio'da ilerleyin, daha sonra dosyaları tarihin doğru olması için kaynak kontrol sistemini kullanarak taşıyın ve mutlu olduktan sonra Her ikisi de taşındı kontrol edebilirsiniz. Kaynak denetiminin, kaynak denetimin sorumlu olduğunu iddia etmesine izin vermek için dosya sistemini kullanarak Visual Studio hareketlerini geri almanız gerekebilir, ancak Visual Studio, dosyalar doğru yerde olduğu sürece sorun olmaz. –

+0

Kullandığınız SVN'ye bağlı olarak [Repair Move] özelliğini de kullanabilirsiniz (http://codeclimber.net.nz/archive/2010/01/11/tortoise-svn-tip-repair-move.aspx) ya da onun gibi bir şey. –

2

Dosyaları, yaptığınız gibi Windows işlevlerini kullanarak kopyalayın. Ancak, "Project'e Dahil Et" i kullanmak yerine, eski .csproj dosyasında göründüğü gibi satırları içerecek şekilde yeni .csproj dosyasını not defterinde elle düzenleyin. Sonra projeniz yenilendiğinde, her şey ayarlanmalıdır.

+0

Bu neredeyse yaptığım şey. Ancak, 30 veri kümesini kopyalamanız gerektiğinde, çok fazla zaman alır ve hatalara yatkındır. Bu yüzden bunu yapmanın daha iyi bir yolu var mı diye merak ediyorum. –