Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates VS 2012多项目模板将无法正确引用EF 5_Templates_Visual Studio 2012 - Fatal编程技术网

Templates VS 2012多项目模板将无法正确引用EF 5

Templates VS 2012多项目模板将无法正确引用EF 5,templates,visual-studio-2012,Templates,Visual Studio 2012,我的解决方案模板中有3个项目(模型、数据访问和服务)。其中不止一个项目需要引用EF 5。当我最初创建第一个模板服务时,EF.dll在引用列表中,但上面有黄色的“找不到”图标。我了解到我可以将以下XML放在.vstemplate文件的底部,这样就解决了这个问题: <WizardExtension> <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToke

我的解决方案模板中有3个项目(模型、数据访问和服务)。其中不止一个项目需要引用EF 5。当我最初创建第一个模板服务时,EF.dll在引用列表中,但上面有黄色的“找不到”图标。我了解到我可以将以下XML放在.vstemplate文件的底部,这样就解决了这个问题:

<WizardExtension>
    <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
    <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
</WizardExtension>
<WizardData>
    <packages repository="registry" keyName="AspNetMvc4VS11" isPreunzipped="true">
        <package id="EntityFramework" version="5.0.0" skipAssemblyReferences="true" />
    </packages>
</WizardData>

NuGet.VisualStudio.Interop,版本=1.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a
NuGet.VisualStudio.TemplateWizard
然后,我找到了如何创建MultiProject.vstemplate的方法,我的三个子项目中的每一个子项目都是按照我想要的方式创建的。然而,引用EF 5的每个项目都未能连接到引用。每个sub.vstemplate文件中都包含上述XML,但运气不佳。我甚至尝试将XML放入root.vstemplate中,但没有成功。这是我的root.vstemplate:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup">
    <TemplateData>
        <Name>CCISC WCF Service Template - Empty</Name>
        <Description>This is the multi-project template for creating a WCF Service at the county that contains EF 5 and Elmah.</Description>
        <ProjectType>CSharp</ProjectType>
        <ProjectSubType>
        </ProjectSubType>
        <SortOrder>1000</SortOrder>
        <CreateNewFolder>true</CreateNewFolder>
        <DefaultName>MyService</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <Icon>__TemplateIcon.png</Icon>
    </TemplateData>
    <TemplateContent>
        <ProjectCollection>
            <ProjectTemplateLink ProjectName="Model">Model\Model.vstemplate</ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="DataAccess">DataAccess\DataAccess.vstemplate</ProjectTemplateLink>
            <ProjectTemplateLink ProjectName="Service">Service\Service.vstemplate</ProjectTemplateLink>
        </ProjectCollection>
    </TemplateContent>
</VSTemplate>

CCISC WCF服务模板-空
这是一个多项目模板,用于在包含EF 5和Elmah的县创建WCF服务。
CSharp
1000
真的
我的服务
真的
启用
真的
__TemplateIcon.png
Model\Model.vstemplate
DataAccess\DataAccess.vstemplate
Service\Service.vstemplate
这里是Service.vstemplate文件。无需向您提供其余内容,因为它们相似,但在参考方面都有相同的问题:

<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
    <TemplateData>
        <Name>CCISC Service Template - Empty</Name>
        <Description>This is the Service project for the CCISC WCF Service Template that contains EF 5 and Elmah.</Description>
        <ProjectType>CSharp</ProjectType>
        <ProjectSubType>
        </ProjectSubType>
        <SortOrder>1000</SortOrder>
        <CreateNewFolder>true</CreateNewFolder>
        <DefaultName>CCISC Service Template - Empty</DefaultName>
        <ProvideDefaultName>true</ProvideDefaultName>
        <LocationField>Enabled</LocationField>
        <EnableLocationBrowseButton>true</EnableLocationBrowseButton>
        <Icon>__TemplateIcon.png</Icon>
    </TemplateData>
    <TemplateContent>
        <Project TargetFileName="Service.csproj" File="Service.csproj" ReplaceParameters="true">
            <Folder Name="App_Data" TargetFolderName="App_Data" />
            <Folder Name="App_ReadMe" TargetFolderName="App_ReadMe">
                <ProjectItem ReplaceParameters="true" TargetFileName="County.txt" OpenInEditor="true">County.txt</ProjectItem>
                <ProjectItem ReplaceParameters="true" TargetFileName="Elmah.txt">Elmah.txt</ProjectItem>
            </Folder>
            <ProjectItem ReplaceParameters="true" TargetFileName="IService1.cs">IService1.cs</ProjectItem>
            <ProjectItem ReplaceParameters="true" TargetFileName="packages.config">packages.config</ProjectItem>
            <Folder Name="Properties" TargetFolderName="Properties">
                <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
            </Folder>
            <ProjectItem ReplaceParameters="false" TargetFileName="Service1.svc">Service1.svc</ProjectItem>
            <ProjectItem ReplaceParameters="true" TargetFileName="Service1.svc.cs">Service1.svc.cs</ProjectItem>
            <ProjectItem ReplaceParameters="true" TargetFileName="Web.config">Web.config</ProjectItem>
            <ProjectItem ReplaceParameters="true" TargetFileName="Web.Debug.config">Web.Debug.config</ProjectItem>
            <ProjectItem ReplaceParameters="true" TargetFileName="Web.Release.config">Web.Release.config</ProjectItem>
        </Project>
    </TemplateContent>
    <WizardExtension>
        <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
        <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
    </WizardExtension>
    <WizardData>
        <packages repository="registry" keyName="AspNetMvc4VS11" isPreunzipped="true">
            <package id="EntityFramework" version="5.0.0" skipAssemblyReferences="true" />
        </packages>
    </WizardData>
</VSTemplate>

CCISC服务模板-空
这是CCISC WCF服务模板的服务项目,包含EF 5和Elmah。
CSharp
1000
真的
CCISC服务模板-空
真的
启用
真的
__TemplateIcon.png
County.txt
Elmah.txt
IService1.cs
packages.config
AssemblyInfo.cs
服务1.svc
Service1.svc.cs
Web.config
Web.Debug.config
Web.Release.config
NuGet.VisualStudio.Interop,版本=1.0.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a
NuGet.VisualStudio.TemplateWizard
如果有帮助,EntityFramework引用的Path属性为空

对于服务项目,.csproj文件中包含以下XML:

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>

..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll
据我所知,它会查看包文件夹的解决方案的根,然后从那里开始。我怀疑上面的元素有点成功,因为它确实在新解决方案的根目录下创建了一个Packages文件夹。它只是没有更新对它的引用


我甚至试图将skipassemblyreference更改为false,但没有任何更改。看来我已经很接近了。

事实证明,一旦项目被保存到硬盘上,“packages”文件夹就更高了一级。为了解决这个问题,我改变了以下内容:

<Reference Include="EntityFramework">
  <HintPath>..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
这需要几分钟,但一旦完成,一切都按预期进行

<Reference Include="EntityFramework">
  <HintPath>..\..\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll</HintPath>
</Reference>
devenv /installvstemplates