我有一個自定義項目模板,我將其添加到Sharepoint項目中。我需要確保我的模塊僅與我的功能相關聯,即使項目已包含其他功能。在IWizard中設置項目子屬性?
通過修改RunStarted
方法中的replacementsDictionary
,替換.feature文件中的projectItemReference
元素中的ID是很簡單的。
例如,我有以下SampleModule_WebParts.feature
文件:
<?xml version="1.0" encoding="utf-8"?>
<feature xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" Id="$SampleFeatureID$" activateOnDefault="false" description="Sample Web Part" featureId="$SampleFeatureID$" scope="Site" solutionId="00000000-0000-0000-0000-000000000000" title="Contoso Intranet Sample Module Web Parts" version="" deploymentPath="$SharePoint.Project.FileNameWithoutExtension$_$SharePoint.Feature.FileNameWithoutExtension$" xmlns="http://schemas.microsoft.com/VisualStudio/2008/SharePointTools/FeatureModel">
<projectItems>
<projectItemReference itemId="$SampleModuleID$" />
</projectItems>
</feature>
通過在IWizard.RunStarted
方法修改所述replacementsDictionary
更換$SampleModuleID$
和$SampleFeatureID$
是微不足道的。但我怎樣才能修改生成的.csproj
文件片段?
<None Include="Features\SampleModule_WebParts\SampleModule_WebParts.feature">
<FeatureId>{78185D58-6398-4ED2-B0D0-3DC20946FF8F}</FeatureId>
</None>
<Compile Include="SPItems\SampleModule\SampleWebPart\SampleWebPart.cs" />
<Compile Include="SPItems\SampleModule\SampleWebPart\SampleWebPartUserControl.ascx.cs">
<DependentUpon>SampleWebPartUserControl.ascx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="SPItems\SampleModule\SampleWebPart\SampleWebPartUserControl.ascx.designer.cs">
<DependentUpon>SampleWebPartUserControl.ascx.cs</DependentUpon>
</Compile>
<None Include="SPItems\SampleModule\SampleWebPart\SampleWebPart.webpart" />
<None Include="SPItems\SampleModule\SampleWebPart\SharePointProjectItem.spdata">
<SharePointProjectItemId>{D982D304-E7FB-4E8C-899B-7D4096A55892}</SharePointProjectItemId>
</None>
在這種情況下,我需要爲.feature
和.spdata
項目設置FeatureId
和SharePointProjectItemId
性能。如果我什麼也沒做,Visual Studio會自動生成這些GUID,但它們不會匹配我在我的replacementsDictionary
中的內容。而這反過來又導致我的.feature
文件中的參考文件被破壞,我的模塊可能與錯誤的功能相關聯。
如何設置這些自定義屬性,使它們持續到當用戶將其保存在.csproj
文件? IWizard.ProjectItemFinishedGenerating
似乎是正確的方法來實現,我可以檢查ProjectItem
參數弄清楚的時候已經產生了.spdata
和.feature
文件,但我應該做的有設置FeatureId
和SharePointProjectItemId
屬性?
項目項 - >屬性 - >按名稱查找 - >設定值(我幹了TreatWarningAsErrors屬性。) – alxx