我有一个asp .net核心项目文件(csproj)。我正在尝试以编程方式向项目添加一些资源文件(resx)。要添加我正在使用的块金Microsoft.Build 16.3.0,请添加资源 我要在其中修改项目文件的应用程序是.net 4.7 它几乎可以完美运行,但是有1个问题,我无法解决。
当我以编程方式在xml中插入新的ProjectItem时,它具有属性Include(编译Include =…)。由Visual Studio添加时,其属性为更新(Compile Update =…)
当我尝试编译项目时,错误是:
包括重复的“编译”项。默认情况下,.NET SDK包含项目目录中的“编译”项。您可以从项目文件中删除这些项目,也可以将“ EnableDefaultCompileItems”属性设置为“ false”(如果要在项目文件中明确包含这些项目)。有关更多信息,请参见https://aka.ms/sdkimplicititems。
要添加到项目中的代码如下:
project = new Project(CsProjectFullFileName);
List<KeyValuePair<string, string>> metadataList = new List<KeyValuePair<string, string>>();
metadataList.Add(new KeyValuePair<string, string>("SubType", "Designer"));
metadataList.Add(new KeyValuePair<string, string>("LastGenOutput", Path.GetFileName(designerFullFileName)));
metadataList.Add(new KeyValuePair<string, string>("Generator", "ResXFileCodeGenerator"));
project.AddItem("EmbeddedResource", relativeResxName, metadataList);
string relativeDesignerName = HelperMethodesTimeJobMasken.GetRelativePath(designerFullFileName, CsProjectPath);
metadataList = new List<KeyValuePair<string, string>>();
metadataList.Add(new KeyValuePair<string, string>("DesignTime", "True"));
metadataList.Add(new KeyValuePair<string, string>("AutoGen", "True"));
metadataList.Add(new KeyValuePair<string, string>("DependentUpon", Path.GetFileName(resxFullFileName)));
project.AddItem("Compile", relativeDesignerName, metadataList);
项目文件如下:
Visual Studio添加了“ PersonalienSqlQueries.resx” 以编程方式添加“ Personalien2SqlRes.resx”。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<DockerTargetOS>Windows</DockerTargetOS>
</PropertyGroup>
...
<ItemGroup>
<EmbeddedResource Include="DataBase\Context\Personal\Personalien2\Personalien2SqlRes.resx">
<SubType>Designer</SubType>
<LastGenOutput>Personalien2SqlRes.Designer.cs</LastGenOutput>
<Generator>ResXFileCodeGenerator</Generator>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Compile Update="DataBase\Context\Personal\Personalien\PersonalienSqlQueries.Designer.cs">
<DependentUpon>PersonalienSqlQueries.resx</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
<Compile Include="DataBase\Context\Personal\Personalien2\Personalien2SqlRes.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Personalien2SqlRes.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="DataBase\Context\Personal\Personalien\PersonalienSqlQueries.resx">
<SubType>Designer</SubType>
<LastGenOutput>PersonalienSqlQueries.Designer.cs</LastGenOutput>
<Generator>ResXFileCodeGenerator</Generator>
</EmbeddedResource>
....
</ItemGroup>
....
</Project>