Это больше не требуется ... теперь вы можете вставить C # в файл проекта / сборки ...
Определите пользовательскую задачу и параметры следующим образом:
<UsingTask TaskName="ReplaceFileText" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<InputFilename ParameterType="System.String" Required="true" />
<OutputFilename ParameterType="System.String" Required="true" />
<MatchExpression ParameterType="System.String" Required="true" />
<ReplacementText ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Text.RegularExpressions" />
<Code Type="Fragment" Language="cs">
<![CDATA[
File.WriteAllText(
OutputFilename,
Regex.Replace(File.ReadAllText(InputFilename), MatchExpression, ReplacementText)
);
]]>
</Code>
</Task>
</UsingTask>
Затем просто назовите ее как любую другую задачу MSBuild
<Target Name="AfterBuild">
<ReplaceFileText
InputFilename="$(OutputPath)File.exe.config"
OutputFilename="$(OutputPath)File.exe.config"
MatchExpression="\$version\$"
ReplacementText="1.0.0.2" />
</Target>
В приведенном выше примере «$ version $» заменяется на « 1.0.0.2 "в" File.exe.config ", расположенном в выходном каталоге.
Широкая таблица - это таблица, в которой используются наборы столбцов и разреженные столбцы. Он по-прежнему следует тем же ограничениям ширины для каждой строки (8019 байт), поэтому вы обычно используете его только тогда, когда ваши столбцы в основном состоят из нулей.
Подробнее о ...
Однако вы обычно не хотите этого делать! Для строк существуют ограничения по размеру, и получение данных может быть медленнее, чем при использовании связанных таблиц (даже тех, которые имеют взаимно-однозначные отношения). Я еще не видел случая, чтобы это было лучше, чем связанные таблицы.
«Чтобы создать или преобразовать таблицу в широкую, вы добавляете набор столбцов в определение таблицы.»
Из здесь